Keyboardapi

This is a complete rewrite of the keyboard api, allowing a complete drop-in replacement.

It handles the provision of default mappings to anonymous users, the creation and storage of mappings for logged in users, and has a validation process for incoming POSTs to ensure valid acceptable JSON is provided. It also uses native SQL types for storage, improving storage efficiency and flexibility.

It removes the need for django-extensions. It also includes some cleanup in the counter javascript to ensure that cellids are always preserved as integers rather than being changed to strings, which makes JSON parsing cleaner and easier.

Finally, this pull request also updates to Django 1.5, and removes a lot of unnecessary cruft from the dependencies which are not required in deployment. It also moves from simplejson to the inbuilt standard library json. It removes the old accounts app, and the UserProfile object which was previously going to be used to hold keyboard mappings.