Mvvm enhancements

Made enhancements to Mvvm.

Removed dependencies on Page by adding some interfaces.
Made its own project as an another plugin.
Made all the workings based on interfaces so through registering your own implementation of these interfaces you could completely replace the Mvvm code.

Im not sure ive done the branch and pull request correctly. please let me know if there are any problems.