Turn Calculator

Refactors out the turn calculator into its own service and makes several (large) optimizations to it's average runtime.
this is fixed in the next PR