Improve new String operations introduced in #843.

- Fix substring
- Push string operations up to RelationalDriver
- Use default JDBC escape functions in JdbcStatmentBuilderComponent
- Document the missing capabilities
- Support indexOf in DerbyDriver and SQLiteDriver
- Support reverse in AccessDriver
- Use proper Option-mapped Column types for all operations
- Simplify and speed up the tests

Supersedes #859. Review by @cvogt 
It's not strictly needed but it avoids generating ugly code like `5 + 1` that can be folded at compile-time