eliminate duplicate logic for reading test data

Create a new `TestUtils` class and use it to provide test data,
eliminating much duplication.
decided to leave mask implementatino as is

Using a left and a right shift would require us to left shift up to
32 times, and we would need to document that it matches the size of an
int in Java. The current method is simpler.
discontinue use of arrays

Arrays were used in the original implementation because a fast
intersection algorithm was possible when these were naturally sorted.
The natural sorting seemed to be missing, and it would be some trouble
to figure out how to get it working. Instead of trying to squeeze more
performance out, which would probably be futile in the end anyway, go
with readability instead by replacing the use of arrays with `Set`s.

Use `HashSet`s, and add a `hashCode` method to `Subcontext` to work
with it. Remove the use of an integer index from `Subcontext`, along
with the static subcontext index that was kept there. The result is
much easier to read code. I have not profiled, but I don't care right
now.
cross-platform newline and AMconstants refactor

Store the result of `System.getProperty("line.separator")` in
AMconstants, and use it write strings in a more cross-platform-friendly
manner.

Add a utility method for formatting doubles as strings, which should
help further with cross-platform differences. Rename the class to
`AMUtils` to reflect the fact that it also contains a method.
switch to gradle project generation

Get rid of the Eclipse project files and reorganize Maven-style. Add
a Gradle build file which depends on Weka, Weka tests and Junit, and
include the Eclipse plugin as well for generating projects.