Issue 229

I think this is a big step forward, but there are still a couple problems:

- The allowable types checking might be too strict. E.g., if a user queries "string_column includes 5" it will throw an error (because includes is used for strings, not numbers) even though there might be legitimate cases where a user would like to find samples where a string column includes the number 5
- If a column is referenced as both a numerical and a string column, it will error (e.g., "ph < 5 or ph = None")

However, I think this can be merged for the demo, since it will make demonstrating complex queries much cooler (for example, I can now run the query ```ph > 3 and ph < 4.0 or study_title includes soil```; note that ```and``` takes precedence over ```or```)
@squirrelo, can ```term``` ever have more or less than 3 elements?  I was operating under the assumption that it will always be a triplet of ```(column_name, operator, argument)```