CMake build system (feature development tracking PR)

This PR will officially track the development of CMake until it's ready to be merged into dev.   I've taken #573 from @akosiorek (currently rebased on the latest dev, thanks!) and force pushed it to BVLC's `cmake` branch.  Future changes to the cmake build system should be PRed against the `cmake` branch (rather than the normal `dev` branch) until its official merge into `dev`.  The cmake branch will periodically need to be rebased on dev by someone developing it if it is to be merged; I will force update the cmake branch (and therefore this PR) when that's done.  See @shelhamer's very nice explanation of this process in his first followup comment on #610 for details.

I (and others) will update this PR with TODOs for merge.