fix possible infinite loop in intro.cpp thread

- it was possible to trigger an infinite loop in FreespaceChecker::check() by
  simply removing the drive letter on Windows (which leads to an infinite
  loop in the FreespaceChecker thread)
- this was caused by not checking if we make progress with
  parentDir.parent_path()
Minor miner fixes (hey hey it's fun to say)

* Fix UpdateCoins() definition in main.h
* Remove pwalletMain reference from BitcoinMiner(), as it is passed
  a wallet argument.
Move internal miner/block creation to separate miner.cpp module.

Public functions referenced elsewhere are added to miner.h.
Merge pull request #2867 from jgarzik/miner-sep

Move internal miner to separate miner.cpp module
Merge pull request #2850 from Diapolo/fix_intro

fix possible infinite loop in intro.cpp thread