Rewrote algorithm for deciding what fork is the valid chain when we get a new block. Also added support for allowing blocks from the future to be checked again for validness when we restart. TODO: allow for these blocks to be revalidated without restarting while client is running if we detect a clock change.