Merge pull request #2 from rpelisse/master

Unit Test for CLI
Add ecmascript AvoidTrailingComma rule.
Added missing files for patch 2996539 : Add support for C# to CPD (simple parser)
Fixed bug 3560464: c/c++ \ as a continuation character not supported

Add ContinuationReader which entirely omits \\n and \\r\n from the
underlying Reader before anything reaches the parser.
Remove stray System.out.
First, I read this comment in the main tree and thought I'd put in some objects:
	/*
	I'm doing a sort of State pattern thing here where
	this goes into "discarding" mode when it hits an import or package
	keyword and goes back into "accumulate mode" when it hits a semicolon.
	This could probably be turned into some objects.
	*/

I created a Discarder interface, and a couple implementations.  One handles keywords/tokens like import and package.  Another discards annotation blocks.  Another turns CPD on and off based on Strings within an annotation e.g. @SuppressWarnings("CPD-START") and @SuppressWarnings("CPD-END).

There have been two features desired by myself and my colleagues strongly.
1. Ability to ignore sections of source code, such as switch/case statements or parameterized factories.
2. Ability to ignore annotations.  More and more modern frameworks use annotations on classes and methods, which can be very redundant and trigger CPD matches.

Just to illustrate, here is a parametrized factory  example that can cause a false positive if you ignore literals (String and int values):

if ("A".equals(input)) return new A(1);
if ("B".equals(input)) return new A(2);
if ("C".equals(input)) return new A(3);
if ("D".equals(input)) return new A(4);
if ("E".equals(input)) return new A(5);
False positives cause the CPD reports to be a burden to review and read.  Many people start ignoring them when the first 20 entries are 'acceptable'.

For annotations, with J2EE (CDI, Transaction Handling, etc) and Spring (everything) become very redundant.  Often classes or methods have the same 5-6 lines of annotations.  This causes false positives.

For CPD-START and CPD-END, it would be much more desirable to use comments rather than annotations.  However, the parser drops comments and they can not be processed by the JavaTokenizer.  The current approach forces entire methods or classes to be skipped, rather than some blocks.  However, I feel its an improvement in cases like parameterized factories or case/switch statements where I don't want them polluting my results.
pmd (site): update release process with git specific commands.
pmd website: make the site more friendly for smartphones.
whitespaces / reformat
pmd: delete the files that are generated by javacc from the repository
 * the generated files are now located under target/generated-sources/javacc
 * Note: The files that are left in
   src/main/java/net/sourceforge/pmd/lang/java/ast
   were initially generated by javacc, but were modified
   (e.g. every AST*.java class)
pmd: improve eclipse/maven integration
pmd: updated changelog with bugfixes
pmd: bugfix for 3574133: False+ : SingularField
pmd: cleanup redundant test classes
 * the two test suites are already integrated in DesignRulesTest and CouplingRulesTest
pmd: improve javacc build with eclipse - add incremental build and only build if necessary
pmd: reintroducing check whether multi threading is support (bugfix for 3565001)
 * created SystemUtils to check for multi-threading permission
Revert "pmd: Remove hack related to multithreading in jdk5 with Eclipse - no longer relevant today"

This reverts commit 720bb3d3b41e2590d6f0e4b8542244192a56e022.
pmd: bugfix 3546093 performance improving by caching not found classes
pmd (build): make sure the rulesets are sorted alphabetically
 * fix TODO - use compiled regex pattern
pmd (build): add a RuntimeRulePropertiesAnalyzer to get the properties a rule supports for documentation (bug 1036)
 * added maven plugin testing for a mojo test case
pmd: using new pmd-build to fix bug 1036 - documentation of properties