Major refactoring, Notification Centre, Input overhaul, Shared camera, Shared movement, Audio changes

/* CHANGES: (I can remember)
======================================================= */

+ Rewrote most of the input system
  - There are now more levels of abstraction
  - Allows us to swap out different backends without changing the front
end (eg. to add Windows WiiMote support or rumble with different
drivers)
  - PlayerInputControllers map game logical strings to controller
buttons/axis
  - Triggers can now work as buttons too

+ Wii remote changes
  - Wii remotes now have more fine-grained direction
  - There are different smoothing values depending on direction
  - Eg. If you go up then diagonal, it will be slower than if you go up
then down, or up then middle
  - You can also set a different value for the diagonal angles based on
which major axis it came from
  - Eg. If you go up then up/right, instead of it being 45 degrees it
could be 30 degrees

+ Xbox controller changes
  - Xbox now has its own custom controller class
  - Abstracts things like triggers to be buttons
  - Maps different buttons for Windows/OSX
  - Also means that we can add rumble support on Windows using
InputXDotNet
  - Still need to add some rumble methods to the base class

+ Notification Centre
  - Added a notification centre
  - Am transitioning event-based stuff to use notifications instead

+ PlayerControllers
  - Breaking out player movement from each character's controller
  - Broke out Camera to be universal, just needs a PlayerController to
track, not a specific type of character

+ More fine-grained Camera controls
  - The camera can now distinguish between the characters moving toward
and away from it
  - It has different properties based on which direction the player's
moving (eg. swing up and away when backwards)
  - It also has an offset variable now, which can be used to re-center
the camera
  - It also now tries to swing around when the character's going
backwards
  - Still need to add a bias so that it tries to get behind the
character when going forward (still feels like you're fighting it at
times)
  - Mice and Elephant now share the same camera, so improvements will
benefit both

+ Elephant changes
  - Camera now much higher
  - Uses new input system

+ Mice changes
  - Now use the shared camera script
  - Also use the ElephantController for now
  - Once the movement gets broken out from the main controllers Mice
and Elephant will have a different main controller (for character state)
  - Then they can share a movement component, but do their own state
stuff (eg. pounce)

+ Audio changes
  - Now that we have a notification system I've moved all of the sound
effects to the AudioManager
  - That way they're all in one place, and will be played automatically
when those events are called
  - I've probably broken the

/* BROKEN STUFF:
======================================================= */

- For this build I just quickly copied the mice and changed their
camera/materials
- I was wanting to get them ready to prefab (so you could just change a
few variables on the rig and be good to go) but didn't get it done in
time
- SplitScreen system still needs to be written, it's annoying to change
camera areas manually
- GUI's probably broken
- Scene switching's a bit broken
- I changed the AudioManager a fair bit
- Performance is getting a bit slow for me, probably because of the new
Input code
- Will need to do some profiling and optimising soon, might get all
mechanics in first though

There's still some old code/scripts lying around, and a lot of
commented-out stuff
I'll go through and clean up