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.
I see in the doc you sent out that this is `Type`, but having it expose the `ModelMetadata` is much richer and still includes the type. Might be worth consideration at some point.