Fix statement preparation in batch (No longer use SqlQuery at batch creation)

This is a backport of #3016.

@cchantep Please review.  To maintain binary compatibility, I had to reintroduce the old `apply` method, and the new `apply` method I had to overload instead of having default arguments because Scala doesn't allow multiple overloaded methods with the same name to have default arguments.

I'm not sure what the consequences of reintroducing the old `apply` method are.  Looking at original issue reported, it sounds like it's not always an issue?  So that means there could be Play 2.3.0/2.3.1 users who are successfully using it.  I think my implementation of the method means that it should just continue to work for them, right?  Or not?
Not sure how if it's possible, but extractor could be let not deprecated (for matching)?