cleanup and some small enhancements

The "whitespace and general cleanup" commit is a large one and has no real functional changes, mostly just whitespace, formatting, etc.

The other two commits are more important though. I rewrote the filter in Java since the small overhead that Groovy incurs adds up, and there's nothing there that needs Groovy. The third commit doesn't change how anything works, just how the filters are registered in web.xml. By using Spring beans you gain a lot more flexibility.

I'm pretty sure that the 2nd and 3rd commits don't depend on the first, so if there is a probem with that one you could cherry pick the two, or revert that one. All of the tests pass though, and I added new ones for the Spring stuff.