Mining Internals

I completely broke the user interface for mining. You can still turn on mining but you can't turn it off, and it doesn't tell you whether or not the miner is running.

But I split mining into its own package, and added an interface.

This PR also adds one extra wallet test that didn't quite make it into the last PR.

Next up I'll fix the interface for mining, and add some unit tests for the interface.
Yeah, it's a bit funky. Basically, wherever the struct type is "implied' (e.g. in a slice literal) you can omit the type, leaving just the braces. (You can also use `&{}` for pointers to structs.)