Big commit

God Justin, what took you so long?
Created a InputManager to handle all the input events that we get from
SDL.
Created an InstrumentManager to handle the actual drawing and whatnots
and storing the utensil state.
Created a HistoryManager with the purpose of storing each block of
information so that we can save and load it.
Constrained input

I added a bit of code in the wrapper to prevent the InputMoved() method
from being called a hundred million times a second (MOUSEMOTION calls as
many times as a clingy ex).