Added column-references to datalog language

Previously, tables with many columns were hard to use in rules
because it was hard to remember what the columns were, how many
of them there were, and which column was which.  In addition,
policies were brittle because a change in the table would
require rewriting all the policies.

This change adds the ability to reference columns by name or
position.  (Referencing columns by position is more brittle than
referencing by name, but it is less brittle than writing out all the
columns.)  For example, instead of writing...
    p(x) :- neutron:networks(x,x1,x2,x3,x4,x5,...,x10)
we can now write...
    p(x) :- neutron:networks(id=x)
Of course, this requires declaring the column names for each table,
which the datasources already do.  So while this patch provides
a general mechanism for name or positional references, it does
not provide the ability to declare column names for tables defined
within policy.

Implements: datalog-column-names
Change-Id: I70d528132e4dfaaaccf04166bec04db7024eecb6