Boost rng

*** WIP, Please don't merge. This is being actively discussed on mailing list. ***

This is still experimental, I'm just posting as a PR to solicit feedback.

The idea is to use boost::mt19937 as our rng engine rather than the linear congruential generator implemented in simple_rng which we were using. This was discussed on IRC: http://www.wesnoth.org/irclogs/2014/04/%23wesnoth-dev.2014-04-29.log

Feel free to criticize, pull this branch and tweak it, merge yours instead of mine, ask me to pull your changes, or ignore this branch completely and do something completely different with the rng. Note: I may still rebase without warning, until I remove this sentence.

Changelog:
- Abandon std::rand based implementation in favor of boost::mt19937 mersenne twister algorithm.
- Random seeds for unseeded generators come from /dev/random or platform equivalent, which boost::random_device is a proxy for, and use system time where nothing like this is available. This applies to the mp server as well as wesnoth clients. (boost v1.43.0 adds support for boost::random_device on Windows via a microsoft api)
- A random seed is always unambiguously a 32 bit integer, represented at all times as a uint32_t, or a std::string. Parts of the engine not immediately related to the rng are more or less required to treat random seeds as strings.
- Raw randomness is converted to random small ints in a way that will not vary by platform, and unit tests will verify this.
- Add a series of unit tests verify the integrity of the rng, the integrity of saving and reloading it, and the integrity of the functions which handle random seeds in the engine and send them over the network.

TODO: 
- In cases when we don't have a seed, ~~currently I'm using stdlib rand(), just like we were before~~ I'm using boost::random_device... The specification states "Class random_device models a non-deterministic random number generator . It uses one or more implementation-defined stochastic processes to generate a sequence of uniformly distributed non-deterministic random numbers. For those environments where a non-deterministic random number generator is not available, class random_device must not be implemented." Does this class exist on every one of our target platforms including pandora? If not I guess will use systime on those? Note: I added a compiler flag for this. http://www.boost.org/doc/libs/1_51_0/doc/html/boost/random/random_device.html
- Is there a standard cross platform version of "boost distributions", to replace the implementation in get_random_int? (See source code comments)
- Better unit tests?

Problems: 
- ~~I ran 3 AI vs AI test cases on this branch (networked and local), they all had +25% damage dealt and taken throughout the game... so that certainly looks like a problem. Is it casting uint32_t to int? Is it the seeding?~~ Note: ~~This was several revisions ago~~, this was at the third or fourth revision which has been rebased and no longer exists, before using boost::random_device... It seems to be working well now.

Minor issues:
- Was I not supposed to use the rand_rng namespace for this?
- I selected 1.40.0 as the boost requirement for random. It would be preferable to have 1.43.0. Here's a summary of boost random changelog:

boost random 1.43.0:

Put the implementation of random_device in a compiled lib, and added Windows support.

boost random 1.40.0:

Made the constructors of all the generators call the copy constructor when passed a non-const reference.
Changed seeding functions to accept any arithmetic type. As a side-effect, the exact signature of seed changed for some classes.
Major bug fixes in uniform_int.