[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
include comment on CPU mode fine-tuning for Flickr example
make no GPU error in CPU-only mode a little clearer
use LMDB in mnist autoencoder examples
Solver switching support & implementation of Nesterov's accelerated gradient and AdaGrad
restored vituals in solver.hpp
converted pointers to shared_ptr
fixed solver constructor in train_net.cpp
improved numerical stability for AdaGrad
bugfixes for AdaGrad
Added L1 regularization support for the weights