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.
```go
diffs = []OutputDiff{{
    New: true,
    ID:  ...
}}
```
would work fine as well