Added inheritence between JSONModel schemas and incorporated Payten's tests for this.
A nicer error/warning message for the 'MinItems' check
Handle schemas that don't have URIs
first pass at agent types
starting to implement name forms for agents

using Sequel plugin - ClassTableInheritance

work in progress - with no tidying up - sorry
Further work on modelling agents and names.

Right now we're only focusing on "person" agents, but the others should be
similar.  What we're thinking:

  * There are four agent types: corporate, family, person, software

  * There are four corresponding name types (corporate, family, person,
    software)

  * Each agent contains a list of names (a primary name and zero or more
    additional names) of its corresponding type.  For example, a person agent
    has a list of person names.

  * There are properties that are shared by all agent types, but the individual
    types can also introduce their own type-specific properties.

  * There are properties that are shared by all name types, but the individual
    types can also introduce their own type-specific properties.

And where this has led us so far:

  * Conceptually we have two inheritance trees: our four agent types inherit
    from a common (abstract) base class, and so do the four name types.

  * We've added support for inheritance to our JSONModel class.  Two new
    schemas (abstract_agent and abstract_name) hold the properties that are
    common to all agents and names respectively.

  * We started by adding inheritance at the model level too (using the Sequel
    plugin) but found as we went that this wasn't really buying us much.

  * Now we have one model per agent type, and one model per name type.  For
    example, the AgentPerson model links to zero or more NamePerson models.
    Rather than using inheritance here, we just have an Agent mixin that
    incorporates the functionality common to all of the agent models.  The
    overlapping properties of the different types are managed in the schema
    migration rather than with multiple tables and joins at query time.

  * We no longer expose agent types as a first-class thing.  Not sure if we'll
    want this or not, but once we split each type into its own schema/model
    having the endpoint didn't seem to make sense anymore.
add contact details to the agent record
Added and endpoint for person agents with create and get handlers.
Generalised one_to_many_names to work for other relationship types.  Modified contact details to use this.
Generalised the way we handle linked subrecords.
Added a controller to allow agent_person records to be updated.
Neatened up the definitions of JSONModel <-> DB linkages.  Now leverage what Sequel already knows.
refactor #type on agent to #agent_type
Removed obsolete agent mixin
Eat your heart out, applescript.
WIP agent create form
add secondary and contact detail form stubs
override scrollTo on sidebar (as we need the hashchange for the tree)
Upgrade twitter bootstrap to 2.1.1; add keyboard navigation to the nav bar submenus;
Added an extra :mixins option to jsonmodel to allow the caller to mix in their own modules.

Modified the frontend to use this new feature to create some methods required
to make form_helper play nicely with arrays.