Add unittests for multiple ELSEs in a row

IF ELSE ELSE ENDIF is a valid construct; execution or non-execution
inverts on each ELSE encountered.
Don't use checkpoints and accept nonstd txn on -regtest
Fix multi-block reorg transaction resurrection
exclude CreatePidFile() function on WIN32 as it is unused
cleanup compat.h Windows stuff

- remove an unneded include for mswsock.h as we use winsock2.h anyway
- move typedef u_int SOCKET; into the #ifndef WIN32 part
- remove typedef int socklen_t;  as this is defined in ws2tcpip.h
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()
Bitcoin-Qt: save and restore position of debug window

- move the code for saving and restoring window positions from BitcoinGUI
  to GUIUtil, make it more generic and also use it for saving/restoring
  debug window positions
fix string in intro.cpp, which is untranslatable on Transifex

- seems the code tags in the original string cause errors, when using the
  Transifex site for translation
Remove #define loop from util.h

Replace the loop macro with while (true). The #define caused
problems for Qt.
Merge pull request #2866 from gavinandresen/loopdefine

Remove #define loop from util.h
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
Revert "Truncate oversize 'tx' messages before relaying/storing."

This reverts commit c40a5aaaf484855a4350fd702e8e72fd21a68155.
Simplify storage of orphan transactions

Orphan transactions were stored as a CDataStream pointer;
this changes the mapOrphanTransactions data structures to
store orphans as a CTransaction.

This also fixes CVE-2013-4627 by always re-serializing
transactions before relaying them.
Merge pull request #2865 from Diapolo/fix_intro_translation

fix string in intro.cpp, which is untranslatable on Transifex
Merge pull request #2827 from Diapolo/rpccon_winpos

Bitcoin-Qt: save and restore position of debug window
Merge pull request #2855 from Diapolo/guard_CreatePidFile

exclude CreatePidFile() function on WIN32 as it is unused
Merge pull request #2857 from Diapolo/compat_cleanup

cleanup compat.h Windows stuff