Input.model refactor

* Merged #127 - thanks @achingono!!
* Added infinite nesting of `Input.Model`
* Added support for ignoring `[ReadOnly(true)]` properties
* Ensured that the control id generator is being used for determining the id of nested properties
* Added `Input.Field` method to input a single field (including complex nested objects) using the same algorithm as `Input.Model`
* Added unit tests for `Input.Model` and `Input.Field`
* Refactored the `Input.Model` code to remove repetition