Extract interpolated values and use as parameters

Interpolated expressions are moved to a map unescaped and replaced with
(^index) in the query where index is a number indexing into the map.
The map is stored in the :external field on QueryExpr.

The postgres adapter replaces the interpolated value with a query
parameter ($1) in the result SQL query and extracts all interpolated
values from the QueryExprs into a list of parameters.
Don't send tagged values to adapter

Don't send tagged values to adapter when type can be inferred, which is
insert, delete and model updates.
Add test for correct parameter offset and collection
Use string sigils in SQL tests

Using ~s{} avoids escaping all " (double quote).
Don't require ^ on literal atoms
Applying first rule of macros on resuce_metadata
Merge pull request #268 from elixir-lang/emj-params

Extract interpolated values and use as parameters