Refactor builder, cleanup

Enforce builder pattern conformance by unit test:

for every private field in there:

 * there has to be a "with"er that can set that value and returns the builder
 * there has to be a getter that returns the 'with'ed value.

Some more code cleanup.
Introduce system lock, EntitySystemInterface

The concurrent nature of the entity system raises a lot of memory
isolation issues. To provide a standard answer for these issues with
minimal overhead and to gently nudge the user to a good structure
and making him think about the implications, we radically change
the base API.

The EntitySystemBuilder continues to create the entity system but
it does not return it directly to the client but instead returns
a new class called EntitySystemInterface that for now offers
only one method that executes "jobs".

These jobs are short or long units of work with exclusive access
to the entity system.

Simple games can just implement their main loop as a job, but it's
also possible to have fine-grained multi-threaded games with elaborate
job set ups but still with locking under our control.

Since this was making testing awkward I created a test rule that
holds an entity system and executes test methods in jobs for it.