Sprinkle some macro sugar on TableQuery.

Instead of "TableQuery(new Foo(_))" for the simple case where you have
a table class with a one-arg Tag constructor, you can now write
"TableQuery[Foo]". The original syntax is still available (and needed
for more complex constructor functions).

This is implemented by a simple def macro which is as future-proof as
possible so we can include it in the stable API. It does not refine the
declared return type or match on trees constructed by the compiler. It
should be possible to rewrite this as a black-box macro with quasiquotes
in the future.

Why not just do it at runtime? Apart from losing compile-time safety,
this only works if E is static, otherwise we cannot instantiate it
through Java reflection:

  def apply[E <: AbstractTable[_]](implicit tag: ClassTag[E]):
      TableQuery[E, E#TableElementType] = {
    val cons = tag.runtimeClass.getConstructor(classOf[Tag])
    apply[E]((tag: Tag) => cons.newInstance(tag).asInstanceOf[E])
  }