[pycaffe] use class names of the form Py* instead of Caffe*
[pycaffe] live in caffe namespace instead of opening it
[pycaffe] use a namespace alias instead of using directives for boost::python
[pycaffe] make PyNet a class, not a struct
[pycaffe] make PyBlob a template over Dtype

We will not actually support double nets in Python with this commit, but
this change will be necessary to create layers that embed Python.
[pycaffe] split _caffe into source and header files

This brings pycaffe more in line with usual C++ style, and will allow
the wrapper classes to be used within caffe when embedding Python.
[pycaffe] declare the _caffe module init function
[pycaffe] remove name property from PyBlob and PyLayer

Attaching names to pycaffe Blobs and Layers isn't necessary anymore,
since they are now accessed by name. This change brings PyBlob and
PyLayer closer to their C++ counterparts, and makes it easier to pass
around blobs without knowing their names, e.g., when embedding Python
in a layer.
[pycaffe] expose Blob.Reshape

While this function should never be called in the current interface, it
will be necessary to have when embedding Python.
Merge pull request #1014 from longjon/cleaner-pycaffe

Clean up pycaffe core