Typed static queries

I'm opening this PR so we can discuss the current state of the implementation.
The intention was to warn the users when the prepareStatement function call fails, and to give them a chance to redeem the same syntax as was used with sql or sqlu. This was added when I noticed that certain correct sql queries would fail at compile time, things like a SELECT statement following a CREATE / INSERT statement, since the macro has no idea that the CREATE / INSERT would be executed before SELECT. So for these cases the user is allowed to do something like 
```
    val s1 = tsql"select * from COFFEES2 where COF_NAME = ${id1}"
    val list1 = s1.as[(String, Int)].list
```

I would add the SQLException.getMessage and an encouragement to use sql / sqlu.