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```)
Might be more efficient to combine this list comprehension and the one above for all_headers into one gnarly list comprehension. Something to think about for later, but since query strings are short this works for the demo.