Added naming rule converter and SQLSyntaxProvider type check

### Naming roule

default naming rule is CamelCase to snake_case

### SQLSyntaxProvider type check

```scala
val u = User.syntax("u")
val c = Contract.syntax("c")
sql"""${User.as(c)}"""  // It makes this compile error!
```