Create Siren view helpers

Razor::View::Siren provides reusable functions for generating Siren
(https://github.com/kevinswiber/siren) representations of objects. The goal
is not to provide direct serialization of database objects as Siren, but to
provide a means by which certain object properties, explicitly specified, are
exposed to the API client.
Migrate API collection output to Siren

JSON Siren (https://github.com/kevinswiber/siren) is a hypermedia specification
for definiting entities in JSON. Siren provides a standard way of representing
both objects and collections alongside their associated actions. It is
essentially an extension and formalization of the current API object format, in
that it supports top-level objects and collections, and both embedding and
linking of objects while specifying the appropriate relation. Siren uses
a 'class' array in place of the current 'spec' property, which allows for
classifying something like a list with both the 'collection' class and the
class of the contained objects.

This patch replaces all objects returned by API calls with their JSON Siren
equivalents, and modifies the CLI client to accept and print Siren entities.

Note: THIS BREAKS THE CLI CLIENT ACTION FUNCTIONALITY. This will be fixed with
a future commit.
Define API endpoints with metaprogramming

This replaces the previous `command :create_xxx` helper with several other
helpers for defining RESTful endpoints. The new helpers are meant to remove
the common CRUD operation and error handling code from individual routes, and
consolidate it in one place.

In terms of concrete advantages, these new handlers allow interpolation of data
from defined routes to be included in the output of other routes. A good
example is the inclusion of Siren "action" listings -- PUT, POST, and DELETE
endpoints -- with the objects they act upon. This functionality will be added
in the next commit.
Whitespace changes