Added GNU/kFreeBSD kernel name (TARGET_OS)

uname -s returns "GNU/kFreeBSD" on Debian GNU/kFreeBSD port. See http://www.debian.org/ports/kfreebsd-gnu/
Update HomeBrew osx makefile patch to account for recent changes to makefile
Refactor fee rules to make them actually readable.

This (nearly) doesn't change fee rules at all:
 * To make it into the fee transaction area, the dPriority comparison
   changed from < to <=
 * We now just ignore transactions > MAX_BLOCK_SIZE/4 instead of
   doing some calculations to require increasingly large fees as
   size increases.
Move implementation of some CBlockLocator methods

Move out of main.h to improve compile times and add documentation
for what the methods do.
Introduce a CChainParameters singleton class and regtest mode.

The new class is accessed via the Params() method and holds
most things that vary between main, test and regtest networks.
The regtest mode has two purposes, one is to run the
bitcoind/bitcoinj comparison tool which compares two separate
implementations of the Bitcoin protocol looking for divergence.

The other is that when run, you get a local node which can mine
a single block instantly, which is highly convenient for testing
apps during development as there's no need to wait 10 minutes for
a block on the testnet.
Refactor keytime/metadata and wallet encryption bugfix

Refactor keytime:
* Key metadata is kept in a CWallet::mapKeyMetadata (std::map<CKeyId,CKeyMetadata>).
* When generating a new key, time is put in that map, and new key is written.
* AddKeyPubKey and AddCryptedKey do not take a creation time argument, but instead
  pull it from that map, if it exists there.

Bugfix:
* AddKeyPubKey and AddCryptedKey in CWallet didn't override the CKeyStore
  definition anymore. This is fixed, as they no longed need the nCreationTime
  argument now.

Also a few related other changes:
* Metadata can be overwritten.
* Only GenerateNewKey calls GetTime(), as it's the only place where we know for
  sure a key was not constructed earlier.
* When the nTimeFirstKey is known to be inaccurate, it is set to the value 1
  (instead of 0, which would mean unknown).
* Use CPubKey instead of std::vector<unsigned char> where possible.
Merge pull request #2781 from sipa/keytimemem

Refactor keytime/metadata and wallet encryption bugfix
Merge pull request #2632 from mikehearn/chainparams

Refactor chain-specific tweaks into a CChainParams class and introduce a regtest mode
Merge pull request #2768 from fanquake/brew-makefile-patch-fix

Update HomeBrew makefile patch
Merge pull request #2765 from vobornik/master

recognize Debian kFreeBSD port by build_detect_platform script
Merge pull request #2660 from TheBlueMatt/gmfrefactor

Refactor fee rules to make them actually readable.