Provide support for more HTTP methods in the AbstractRestfulController

- Adds explicit support for OPTIONS, PATCH, and HEAD
- Adds ability to register handler methods for custom HTTP methods
- Refactors:
  - DRY up identifier retrieval -- added getIdentifier() method
  - DRY up parsing of content body -- added processBodyContent()
  - Moved RESTful method handling out of conditional
Remove abstract keyword from new methods

- Cannot add new abstract methods (BC break); instead, raise exceptions
  if unimplemented.
- Added in missing patch() method.
Merge pull request #3349 from weierophinney/feature/mvc-restful-methods

Provide support for more HTTP methods in the AbstractRestfulController