Fixes AIOOB Exception when name is empty. Closes #322

When building the global index, some types of broken code seems to
export empty names (this should not really happen). This fix protects
the user of the index.
Adds aggregation utility for Junitresult.
Makes Junitresult model comply with JUnit4 (as documented by Jenkins).

Testsuites element has attributes similar to Testsuite/Testrun.
Made time a double, reported resolution is now ms.
Testcases can have multiple errors/failures logged, and has
multiple system_out/system_error.

Adds tests.
Changes aggregator to return a Testsuites instance.

Jenkins handles an aggregated result where the root is a Testsuites and
not when it is just a Testsuite.

This commit also adds missing serialization of Testsuites and Testrun.
Adds aggregation of ts + sets ts from file if missing. Formats ts.

When timestamp information is missing it is set from the modified time
of the file containing the testresults. For nested teststuites, at least
the top level suites are timestamped.

Serialization of timestamps is now made with the XML utility to ensure
compliance with parsed timestamp.
Fixes issues with parsing/serializing system-out and system-error.

Correct handling was simply missing in several places.
Cleans up comments/todos and fixes Copyrights.
Fixes overwrite of auto edits preferences when nothing changed.
Closes #325

The onStore logic in the check box editor superclass checked if there
was no change and if so overwrote the values with the defaults. The fix
is simply to do nothing if nothing has changed. 
Fixes string quoting quick fix should change ' to \'. Closes #327
Adds Rakefile scanning capabilities to RubyHelper

RubyHelper and the implementation for Jrubyparser can now scan a
Rakefile and return information about the defined tasks (names in
namespaces and descriptions of tasks).
Changes errors message for Strings containing single interpolation.
Closes #330.

Changed to "String contains single interpolated variable. Double quotes
not required." to make it possible to understand which preference that
controls this warning. (The previous error message was a copy/paste of a
similar check).
Protects Rakefile parsing from certain ruby evaluation errors.
Corrects problem with rakefile tasks without names.

Rspec and Cucumber rake tasks have default names; spec and cucumber.
These names are now set when there is no name defined.
Improves aggregation of Junitresults with intemediary testsuites.

Prior to this, all testsuites ended up as children of the root suite.
Now they are aggregated into testsuites based on their directory name.

The Junitresult model is also refactored (the testSuites feature moved
from the individual subclasses of the AbstractAggregatedTests - this
reference has now moved to the abstract interface).

This commit also contains a utility Junit test that aggregates a
specific result from a "jenkins stack" - it is not included in the
testsuite, but can be executed separately after having made the result
available under /tmp/jenkins/results. The output appears in the "output"
directory.
Added ability to pass encoding parameter to DOM serializer
Fixes a name such as ::$firewall causes IOOB error. Closes #333

Invalid names (in some places) could cause an Index Out Of Bounds error
as the lookup logic was not prepared to handle a lookup of an empty
name.
Empty names should simply produce empty lookup result.
Merge branch 'dev' of git@github.com:cloudsmith/geppetto.git into dev
Fixes wording of Borat:ish error message.
Adds hiera functions to all targets. Updates 2.8 references to 3.0.
Closes #282

A new 3.0 target has been added, and the previously target known as
2.8 is renamed to 3.0 as there will never be a 2.8 release of puppet.

Internally, all related classes and constants have been changed to
reflect "3.0" instead of "2.8".

Since the string "2.8" may still linger in user's preference stores,
this string is still considered when reading the preferences, but it is
translated to 3.0. When operating on the preferences, the "2.8" is
replaced with "3.0".

This commit also includes improvements in parsing of label and version
of the pptp (version was missing, and labels had an extra space in
them). This because the way they are loaded changed some time ago.
(These labels are only used for documentation when looking at the pptp
XML).

When this commit is used, users that patched their enviroment will need
to remove their patches or will see ambiguity errors for the hiera
functions.
Corrects handling of injected validator constructor parameter.

The constructor is specified with @Inject and then ignores one of
the parameters in favor of an @Inject on the member field declaration.
This means that the parameter can not be varied via the constructor.

The change makes the member field non-injected, and instead set in the
constructor.