Implement new Qserv query rewriting and validation logic.

- Implement duplicate removal for simple queries (non-joins)
  on match tables.
- Remove dead code for permuting FromLists
- Move findAndTerm out of WhereClause.cc to make it useable elsewhere.
- Remove complicated and buggy ValueExprIter in favor of a visitor
  based approach, and allow value expressions to be extracted from
  GROUP BY, HAVING, ORDER BY, and BoolTerms.
- Fix incomplete implementation of findColumnRefs().
- Fix missing commas in QueryTemplate rendering for compound
  GROUP BY and ORDER BY clauses.
- Extend ColumnRef patching performed by TablePlugin to ON,
  GROUP BY, HAVING, and ORDER BY clauses.
- Fix alias lookup table generation in TablePlugin so that unqualified
  reverse lookup for table T will find the entry for D.T, where D is
  the default database.
- Remove "secIndexColName" from metadata - "dirColName" will always
  have a secondary index, and support for additional secondary indexes
  will be added later. Update the css::Facade API to use "dirColName"
  rather than "keyColumn", and provide a way to list all the secondary
  index columns for a table. Sync up test cases, example qserv-admin
  param files, and qana/QservRestrictorPlugin.cc.
- Minor stylistic cleanups.
- Make partitioning overlap accessible via css::Facade.
- Provide access to partitioning IDs and director table names from
  css::Facade.
- Introduce a set of table metadata classes,
  as well as a pooling facility for them.
- Add data structures for query validation/rewriting and resolution
  of interesting column references.
- Implement query rewriting, including support for match tables, and
  improve documentation.
- Rewrite TablePlugin to get rid of TableStrategy and use RelationGraph
  instead
- Fix bug in FromList::clone(), which was shallow copying rather than
  deep copying its TableRefs.
- Update test cases according to new TablePlugin logic and fix bugs
  that were revealed
- Make InvalidTableError subclass AnalysisError so that throwing them
  does not crash the czar
Merge branch 'tickets/DM-198'
BUGFIX : replacement of os.getlogin() with getpass.getuser(),
more robust (os.getlogin() wasn't working with some terminal
multiplexers)
Removed couple of unused options from config; cleanup of the example gonfig files