IInputFormatter interface changes. 

1. Moving input formatting related classes to MVC Core.(for tests as well).
2. Cleaning up the IInputFormatter to the final version.
3. Updating the input formatters and the context to be compliant with the IInputFormatter interface.

- Not cleaning up TempInputFormatterProvider.
Well, users can override `ModelMetadata` properties that could matter to an input formatter.  For example, `IsReadOnly` might be special-cased in someone's formatter.  This isn't a scenario ASP.Net vCurrent supports well: The relevant methods all get just the model and its `Type`.