Changed win condition testing in AbstractEngine

- Win conditions are tested to align better with expected/natural behavior.
  Previously, win conditions were tested after each move. This may or may not
  be a problem depending on which rules are desirable.
  This change means that, when a fox is performing multiple jumps, only after
  all moves have been performed are win conditions tested.
  A likely later change would be to have a fox block another fox only when it
  completes its turn in a blocking position.
- Added tests to verify the new behavior of AbstractEngine and made some other
  improvements to testing:

- Added a test with expected outcome DRAW to the TestStateTestHelper tests
  under sim_data/simulatortest
- Added scenarios draw01 and draw02:
  These explore the evaluation of win conditions. A draw is an edge case by
  definition.
- Parameterized OutcomeTester.
Customized rules in StdEngine

StdEngine has finally started doing its own thing.
Foxes are only removed at the end of the turn.
Win conditions and deadlock are also tested at the end of the turn.
The rules.txt file was updated to reflect this change.
protocol.txt was also updated with a first attempt at defining the
protocol using ABNF.
The change to StdEngine was easiest to make by adding another template
method to AbstractEngine: removeUnits