Improvements to simulation runner.

- Replaced ArrayList with LinkedHashSet for better performance (~2x)
- Entity class handles state duration itself, instead of inside
process() on ad-hoc basic per entity implementation.
- Pausing handled by Simulation.process(), not Entity.
Trying to 'rebase' back to master.
Trying to 'rebase' back to master.
Trying to 'rebase' back to master.
Merge pull request #1 from cdahmedeh/interruption-improv

Handling duration.
Fixed logic error in isPaused().
Merging pause logic fix from master branch.
New state processing technique implemented. Processing is done using
anonymous Handlers that define condition, start events, duration and 
end events.
Merge branch 'master' into preemption

Conflicts:
	SMLabTestingSimulation/src/org/smlabtesting/sim/domain/generic/Entity.java
Commit missing classes from preemption branch.
Added threaded printer to prevent console from bogging down our
simulation.
Added threaded printer to prevent console from bogging down our
simulation.
Speed up hashcode calculation for entity. Provides massive performance
improvements.
Fix embarassing typo.
Broken commit. Basic drawing for UI, developement won't continue unless
time permits.