Added tests and updated existing tests

Moved to using rich python data structures for debug compiler results
instead of using strings and string comparison.

The new tests mostly cover the new EQ operator types.
small style fixes
Extend parsley definition

We want to be able to handle:
    * quoted directive values
    * parsing <class>.<attribute><equality-operator><value>
        - For example: sys.hostname~foobar

We also parsed out the regex parsing to reuse it in other parts of the
grammar.
Add compiler back-end features

This patch adds the following:
    * model introspection for search directives
    * inequality search operators
    * explicit strict equality and fuzzy equality search operators

We want users to be able to specify which fields on a model they want to
search. The syntax for specifying the field is shared with how django
annotates searches in Q objects (using '__' to specify traversing to a
related model.)

For example, say a user wanted to filter on systems with the status
'production'. They can now search:

    sys.system_status__name='production'

Internally, the compiler will parse the rhs to:

    directive -> 'sys'
    dattribute -> 'system_status__name'
    dvalue -> 'production'
    eq -> '='

It will then attempt to verify that 'system_status' corresponds to a
relational field on the 'sys' (System) class and that the model
referenced by 'system_status' (SystemStatus) has a field 'name'. If
things checkout the compiler will pass along a Q object for filtering
systems that looks like:

    Q(**{"system_status__name": "production"})

The following query is also now supported:

    sys.hostname~admin1 sys.server_model__vendor~HP \
        sys.purchase_date>=2014-01-01 sys.notes="/foo ba[zr]"

This search does a fuzzy search for systems with "admin1" in their
hostname, selects for servers who's server model is supplied by vendors
with "HP" in their name, were purchased after (or equal to) January 1st
2014, and that atch the regular expression "foo ba[zr]"
Add tests for new model introspection search features
Expose which fields can be searched on a models

This patch mainly introduces discover_for_class() which introspects a
model to see which fields can be searched. The results are shown to the
user via the help button on the search page.
mysql can raise Warnings
update help docs to use = instead of '=:'
s/gaurd/guard/
Use border-style CSS instead of border html attribute
Looks fine without fiddling with table border attribute
Add the ability for a user to RESTfully query the schema of a specific class