Ae fn functionality

review @tleach cc @nrschultz 
Sometimes it becomes necessary to set the expected type for a given field dynamically at validation-time, based on the content of a given document. 

Schemer allows you to specify a function for a given field's `'type'` specification for this purpose. The given function will be called at validation time with a single argument - the node in the current document of which the field is a member. The dynamic type function should return the `type` against which the given field value should be validated. This can be a simple Python type, or a `Schema` or `Array`.

Consider the following example: