Optimize templates. fixes #2033.

Use a single StringBuilder for building template output (as opposed to many string builders appending each other up the tree).
Don't create collections for single items in template source.
Change Appendable's definition to support single StringBuilder.
Fix for Java Message Arguments handling

There was a bug in the handling of message arguments when used in Java.

I discovered it when using `@Constraints` annotation on my model objects and returning the validation errors as Json. This simple example illustrate the bug :

     //in my model object
     @Constraints.MinLength(2)
     public String myField;

     //in my controller (Json version)
     return badRequest(form.errorsAsJson()); //"Minimum length is [2]"
     //in my controller (form render)
     return badRequest(formView.render(form)); //"Minimum length is 2"

 By digging into the code I found out that we were passing directly a List to `Messages.get()`, which in turns rewrap it into another `List` to then call the API. The bug is in fact wider than I first thought and the use case I described must not be the only one where we get this kind of error.

 The patch is simple, it checks if there is only one argument and if it is a `List`, in this case it returns the `List` as is, otherwise the previous behavior is kept (wrapping with `Arrays.asList`).
 Tests were added in MessagesSpec to validate the behavior in Java, and a MessagesTest class was added to check the behavior of the arguments transformation.

 CLA has been signed.
Fix typo
Merge pull request #2268 from matthew-lucidchart/pullrequest-template-optimizations

Optimize templates. fixes #2033.
Merge pull request #2264 from gmethvin/plugins_comments

Add play.plugins file with comments to integrationtest
Merge pull request #2266 from CedricGatay/fix/java_msg_args_list

Fix for Java Message Arguments handling
Merge pull request #2267 from fernandoacorreia/fix-typo

Fix typo
Create Java Mode enum