Replaced "optional" attribute with "required" attribute.

As of draft-zyp-json-schema-03 the ``optional`` keyword has been removed in favor of a ``required`` keyword.

    5.7. required
        This attribute indicates if the instance must have a value, and not
        be undefined.  This is false by default, making the instance
        optional.

http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.7

This pull request replaces the checks for ``(:optional schema)`` with checks for ``(not (:required schema))``.  It also fixes the tests accordingly