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```)
I thought about that, but opted for clarity over efficiency.  I *think* this will still be fast (enough; at least for the demo, and probably for production), although I haven't profiled it.