Clang format code base

This is a rather large change. I've added a ``.clang-format`` style file and a helper script to format parts of the code base (``utils/clang-format.sh``). The commit after that does the reformatting.

I've sent this pull request so people can take a look at the style I've used. Coding Style is a very personal thing but I'd to get this right so please look at the changes made by ``clang-format`` and see if we need to tweak the style file a bit.