Hidden class pattern for InputManager

Implements the hidden manager class pattern based on David Setser's
GraphicsManager work. This changes InputManager's visibility so that
View-only methods are only visible to the View and Model-only methods
are only visible to the Model. The advantage of this method over simple
interfaces is that the underlying implementation (which contains both
view and model methods) cannot be directly instantiated.
I feel like in general, we should have enums in the files where they're used, (outside of automatically generated enums for assets) but since they're used for both interfaces, I think the best we can do is this pattern, where we have them in a separate file and include this file in both interfaces.

That does mean we should include rather than forward declare so that to a user of either IInputManager, it's as if the enums are already in the IInputManager.