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