Ensure invalid/non-implemented methods return 405

* Fix existing 405 exception by setting allow methods
* Add additional check to see if the method is implemented
Post revisions: updated posts api to create a new revision on every change

* Only make post slug unique for type 'report', since revisions might
  have duplicate slugs
* Refactor posts API to share code between POST and PUT
* Allow 'translation' post type
* Create 2nd most with type "revision" if anything changes when submitting
  a post.
Adding /posts/:id/revisions API
Fix api.posts.feature test to match changes
Add tests to ensure updating post creates a new revision

* Adds 2 tests:
  first hits /posts/99, second checks revision count increased
* TODO: work out how to combine this/make them indendent
Add the basics of translations API /posts/:post_id/translations/:id
Simplify Post::form_exists check and add Group::form_exists check
Throw 404 when parent post doesn't exist and add test for such.
Make post urls using translation / revision API as appropriate
Start on Many to many form attributes #21

* I've made attribute key unique
* Moved /forms/:id/attributes/:id to /forms/attributes/:id
* Added join tables (though think maybe I only need the form_groups one)
  * forms_form_attributes
  * form_groups_form_attributes
* You can only create attributes with a form + group - since orphan attributes aren't very useful.
* Need to work out what the API call would be for adding an existing attribute to a form group..
* Not too many issues, but more joins required.
Many to Many form attributes #21

* Move /form/attributes to /attributes
* Update /form/:id/groups/:id/attributes
  * POST can now add existing attributes
  * DELETE remove attribute from the group, doesn't delete it permanently
  * GET /form/:id/groups/:id/attributes/:id now works
* Remove forms_form_attributes table
  join through form_groups_form_attributes instead
* Split group attributes api calls into seperate controll
* Split group attributes tests into seperate feature
Add /posts/:id/translations/:locale route to accessing translations

Currently reproduces too much code from Posts controller. Need to refactor
for reuse.

Adds test for locale based url
Fix orphan revisions/translations after a post is deleted
Stop posts API returning revisions or translations

Also adding tests to confirm this
Starting OAuth2 module

* Add oauth2-server-php library
* Add basic /oauth controller to prototype authorized and token requests
Better handling of OAuth2_Response: pass params to Kohana_Response
Make user model merge in parent rules
Adding Kohana_OAuth2_Storage_ORM : ORM storage for OAuth2 server
Rename server and storage variables
Minor whitespace change