Initial ApiProblem view model implementation
Created itemized todo for view-layer refactor
API-Problem implementation

- Value object
- Has all behavior for casting exceptions to detail, using HTTP status
  code to determine title, etc.
- Unit tests for all behaviors
Created Item and Collection value objects
New RestfulJsonModel implementation

- "dumbed-down" implementation; accepts payload, and has test methods to
  determine the payload type
Initial RestfulJsonRenderer work

- Allows rendering API-Problem results
- Allows bare-minimum rendering of HAL items
  - link creation and composition
  - does not do hydration yet
Rendering of hydratable HAL items

- Allows class-specific hydrators
- Allows setting a default hydrator
- If no hydrator at all, simply casts to array
Non-paginated collection rendering
Rendering of paginated collections implemented
Completed JsonRenderer implementation

- Added docblocks
- Tested most behaviors
Reworked RestfulJsonStrategy

- Moved under View hierarchy
- Have it analyze renderer and/or model to determine content-type header
- Set status code based on API-Problem when possible
Refactored API-Problem listener

- Now simply creates an ApiProblem instance, and attaches it to a new
  RestfulJsonModel instance.
Modified HalLinks to act as controller plugin

- Re-instated createLink method
  - forItem and forCollection now proxy to it
Moved HalLinks under Plugin namespace

- as it is general purpose
Removed no longer used plugin
Finish integration

- Refactored ResourceController to return HAL and/or ApiProblem results
  - Casts only these types to view models
  - allowed removal of several helper methods surrounding links
    generation
  - Use HalLinks plugin for generating Location header when necessary
  - Ensured all tests run
- Removed unused plugins (ApiProblemResult)
- Fixed Links tests (renamed to HalLinks, removed tests for
  functionality no longer covered)
Removed invokable for API-Problem result plugin
updated todo list
Merge branch 'feature/view-layer'

Completely re-factored view layer.

Creates new objects for representing HAL items and collections, and API
Problems. The view layer now consumes these to generate appropriate payloads,
including hyperlinking. This allowed reducing the code in the controller
to simply marshalling values and returning them. It also provides a much
easier way to attach hydrators, as you can pull the PhlyRestfully\JsonRenderer
service and attach hydrators to it (instead of using events).