Kmem rework (WIP)

This pull request is not complete and should __ONLY__ be used on a test system.  I'm opening this pull request to get feedback on the general approach.  It builds on the work @ryao has done in #369.  It has only been lightly testing under CentOS 7 and expect there may still be build failures for other distributions.

@ryao I'd appreciate your feedback on this, particularly on af7f2ab3a8f5ff376f0c343749cc4878f5ed6012 which significantly restructures the code.  This patch stack still needs significant polish but the core ideas are all there.  My commit comments contain notes for some of the areas which I still think need work.

* All the previous patches in #369 have been refresh so they apply cleanly.
* The kmem_alloc/vmem_alloc interfaces have been unified.
* The kmem_alloc/vmem_alloc implementation has been consolidated.
* Split spl-kmem.c in to spl-kmem.c, spl-vmem.c, spl-kmem-cache.c with respective headers.
* Cstyle issues for related source fixes have been fixed.