Allow VMs to set default in their constructor.

This also required making sure that nested viewmodels get initialized so that the user-specified data would be honored.
Merge remote-tracking branch 'upstream/master'
Remove unnecessary checks in ViewModel.
Add an initial test for ViewModel.
Merge remote-tracking branch 'upstream/master'
Merge pull request #10 from xirzec/master

Allow VMs to set default in their constructor.