Fallback split

This adds two fairly complicated pieces (the fallback splitting code and a superclass for tasks that may get resumed across deadline exceptions), and a few simplifications (remove fallbackProxyUserId, create a FallbackProxy class to keep track of fallbacks, since there is no useful overlap with other lantern peers that justifies having both as LanternInstances).

I've tested this end-to-end manually.  The fallback splitting algorithm proper would need some unit tests, but  I don't think refactoring it to afford that is warranted at this point, esp. since we don't know whether we'll actually do fallback splitting at all after we incorporate the SNI tricks in production.  I think the other simplifications in this branch are worth doing even if we eventually ditch fallback splitting.

Some utility functions were added to the MaintenanceTask class to aid transition, which is rather simple this time around.  `lanternctrltest` is running this branch.

This needs to be deployed in coordination with (relatively minor) lantern_aws changes.