Switch to NuGet NUnit.

Due to some very weird behaviour from Xamarin.Studios, it was possible
to use the bundled newer NUnit.Framework for some time. Probably after
reopening the solution it was unable to find the bundled version and
used system nunit, which was older.

Using NUnit from NuGet solves such Xamarin tools instability problems.
Refactor model lookup code into ModelManager.

ModelManager is responsible for caching and managing shared models.
Having it as a separate entity enables us to more easily unit-test the
models as we can easily wipe the caches and run the next test.

Some of the old static methods still remain as convenience methods.
Broadcast model change before validation.

Send the global ModelChangeMessage before the validation logic has
kicked in to avoid sending validation errors before the property change
message.