Split off turn preview into its own class

Having a separate component will make it easier to implement turn
preview animation in the future.  That probably won't make it into the
Tech Demo, though.