Added objects to scenario3_hist.

Also, a comment in AbstractAINode justifying the awful design choice.
Mild improvements to compile/run scripts
Random number generation in ActiveAINode now uses RandomNumberGenerator

Also added cumulative communication to the statistics output
Standardised scenario file naming
Optimised and generalised compile and run scripts

Compile script no longer packages the entire library JAR. Instead, it has been added to the classpath of the built JAR. This does mean that the library JAR must be present separately before CamSim will run. It also means it has to be in the same directory or in a directory on the classpath.

I have fixed an issue where the compilation would not recognise unreferenced classes (i.e. those referenced only at runtime using reflection). These are now automatically included as long as they match src/epics/ai/*.java
Fixed random number generation and scenario 'features'

- Fixed random number generation which was sometimes using a fresh
instance of Random() whereas RandomNumberGenerator should be used at all
times to ensure a common seed and therefore deterministic behaviour over
multiple experiment runs.
- Fixed 'features' in scenarios (essentially, names for objects). They
were previously all 1.0 but now have different names.
- Some formatting (mainly removing excessive newlines)
Moved scenarios to new dir. Created missing scenarios for all cams.
Added solutions to overstay problem and instantiation problem

Instantiation problem: Never seen an object before so we have no
avg TS to calculate history based bids. Set a default for this
(1.0 for now but should investigate).

Overstay problem: AvgTS is e.g. 10 and object is around for 15 TS. What
do we bid? We can't use our current formula so we use a default
bid coefficient instead
Fixed CameraController constructor bug. Fixed determinism/hashcode

- CameraController constructor was taking in arguments and assigning
them to private static fields! Outright bug which is now fixed (they are
now instance fields)

- Previously, the code was not deterministic for the same AI node. This
was not trivial to find. The reason was that tracked objects were being
stored in a hashmap, which was using hashes of CameraControllers as
keys. These were being iterated over in the order of keys in the map,
which changed during every runtime because it was using the default
Object.hashCode() method which only guarantees constancy during each
JVM run. I fixed it to use a basic hashCode method, so now
CameraControllers are iterated over in a deterministic way and several
runs will obtain the same solution.
Added summaryFile generation and enabling code. Minor formatting.

Instead of simply relying on output.csv files which tell us about
individual timesteps, there is now a summary file that can be generated
using the --summaryfile or -f arguments on the command line. These
currently include the same information as the output files plus
cumulative data such as cumulative utility. The idea of this is to sum
up a whole experiment in a one-line summary to compare the fitness of
different algorithms/configurations.

Also removed some redundant code and cleaned up some formatting.
Adjusted run file for CamSim
Merge pull request #2 from hxcaine/CamSim

More changes, fixes and additions