Refactor: Remove a bunch of repeated code from the attack case

The parsing code for the attack case was a real inline mess, refactor
it out and extend it to provide the needed attr change map while I'm
at it.
Refactor: Render the top level repl modular

Using the cortex.repl namespace, break out all the single command
implementation code and locate commands via a _dispatch function pointer
map in cortex.repl. This begins to isolate the top level cortex file
from changes to the implemented commands.

In support of this, rework the Cortex state to be a very Clojure style
map with string keys that I index into, side effect and return for good
measure in every single command implementation. While this still uses
global state, the global state is due entirely to Python's side
effectful implementation of map assignment and side effect semantics
rather than having globally exposed vars which are mutated.

Break out many of the utility functions which were cluttering cortex
into cortex.helpers, move the Warmachine specific damage computation
into cortex.wm