Checkstyle v6.x upgrade and implementation of rules

Handles https://github.com/Jasig/cas/issues/759

This is a rather large but benign pull. It upgrades our checkstyle engine to v6.1, and implements the following changes/fixes:

1. check for duplicate property keys in language bundles and other property files.
2. check for "@since" tag in Java components (this is difficult to implement, and it's not perfect yet)
3. check for removing default values from var initialization
4.  check for "@author" tag in Java components
5. check for number of abbreviations (such as Xml, rather than XML)
6. check for magic numbers (by far one of the bigger changes)
7. consistent style for javadoc tag ordering (by far one of the bigger changes)
8. consistent style for annotation placement
9. consistent style for naming methods, classes, parameters, factories, etc
10. check for boolean expression complexity
11. possibly a few more

All tests should pass. 

TicketException is an abstract class. The recommendation is abstract classes as far as naming patterns go need to state so in their name. Thus, `TicketException` becomes `AbstractTicketException`. 

Likewise, a class whose name is AbstractXYZ or XYZFactory must also be marked abstract