[INTERNAL] Reworked standard methods of classes in activities.*

Quite a number of hashCode(), equals(), and toString() implementations
in the activities.* package were written in a cumbersome way. The new
implementations of these methods:
 - make use of org.apache.commons.lang.ObjectUtils.equals() and
.hashCode()
 - perform the necessary checks ordered by increasing "costs" (first
primitives and Enums, then other objects)
 - allow subclassing (some equals() implementations required the *same*
class instead of using "instanceof")
 - follow a common structure (much easier to read, e.g. for new
developers)

However, this patches does not introduce new standard methods: If a
class was lacking them before, this patch does not add them.

Furthermore, some ActivityDataObjects were not as "dumb" as they are
supposed to be. Instead they duplicated some logic from their Activity
counterparts (i.e. they checked the parameters passed to their
constructors). These duplications were removed.

Also all @Nullable annotations were removed (they were stemming from
PicoContainer and were of no use in this package). Instead, all
constructor parameters that might be null were accordingly described in
their JavaDoc.

Finally, a bunch of test cases was added to ensure the proper conversion
from IActivity -> IActivityDataObject -> IActivity. The three year old
(!) problem that was fixed in 449b5576774e315dbc6564ed80ceb376b0bd56d7
would have been detected by this.

Remark: This patch is likely to break the compatibility with older Saros
versions because the name of a field in StopActivityDataObject changed.

Change-Id: I40baa09a2e387f4b3e9bccc0b9e54778e7f07bd5
Reviewed-on: http://saros-build.imp.fu-berlin.de/gerrit/862
Reviewed-by: Arsenij Solovjev <xeper000@gmail.com>
Tested-by: Jenkins CI
Reviewed-by: Patrick Schlott <pschlottk@gmail.com>
Reviewed-by: Franz Zieris <zieris@inf.fu-berlin.de>