MinGW  port

So I've patched up the library to compile with `gcc` `4.9.2`:

```
cmake -g "MinGW Makefiles"
mingw32-make
```

I've just gone through and fixed up the compiler warnings/errors at the moment. I've tried to make the commits as fine grained as possible in case you would like to `git cherry-pick` them onto `master`.

The library doesn't seem to currently work due to hangs inside `WaitForMultipleObjects` in the Windows kernel. The backtrace looks like it is stalling inside the MinGW implementation of `pthread_cond_init` which is wrapped by `std::condition_variable`.  Thought I'd publish the branch in case anyone can provide any pointers?

I'll try to move forward with getting it compiling with VS2013 Express.