Merge pull request #32 from maurizi/topic/isnull-predicate

Support ISNULL predicate
Properly convert null values to strings

Previously this would work for single null values, but failed for nulls
inside an IN caluse
Use the same join regardless of whether tree is in the filter or not.

Since we have added filters for tree.id IS NULL, we need to LEFT JOIN
when filtering for trees, which makes having a separate select pointless.

I've left filterStringToTables.js in place, since I expect to need
separate SELECT statements depending on the filter in an upcoming PR
Update docs
Pull filter traversal utility functions out of filterStringToWhere
Add a DISTINCT clause to SQL SELECTs
Add support for filtering on tree photos

 - Moves JSON parsing from filterStringToWhere up into makeSql
 - Changes SQL generation to only JOIN to tables needed for filter
 - Gets rid of special-case base SQL for UTF Grid requests
 - Note: we do not need to do a DISTINCT ON (treemap_mapfeature.id), even
   though JOINing to photo means we may have more than one row per mapfeature,
   since we also do DISTINCT ON (the_geom_webwercator), which should eliminate
   duplicate mapfeatures
Update docs