Exceptions in a @return_future function go to both the caller and the Future.

Add a test for the UnboundLocal error seen here and remove the
no-longer-needed initialization.  I'm not 100% sure we want to do both
(due to the risk of callback-doubling), but the old way where the caller
saw one error and the future resolved to a different error was clearly
incorrect, and leaving the future unresolved doesn't seem right either.
Test the @return_future return value assertion and move it again.