Inbound Outbound arc should use state in deciding if they can fire
Use non-blocking concurrent hash map for caching
Remove transition inbound/outbound arcs from the map when a transition
is deleted

* Add unit tests
Revert non-blocking map because it is strangely slower

* YourKit Java profilers reports 3-5x slow downs on calls to put and get