Added user variable callbacks to structuredjs, complete with tests.

Variable callbacks let the user provide functions that take in a proposed
value for a structure wildcard variable, and can accept or reject that value
as valid. The callbacks can also take in the values of multiple variables.
The user can optionally define failure messages for
when variables match the structure, but do not fulfill the callback-required
constraints.