DIVERSE: A Framework for Building Extensible and Reconfigurable Device Independent Virtual Environments