add MemoryDataLayer for reading input from contiguous blocks of memory
add size accessors to MemoryDataLayer

This will facilitate input size checking for pycaffe (and potentially
others).
add basic tests for MemoryDataLayer
pycaffe: let boost pass shared_ptr<CaffeNet>
pycaffe: add Net.set_input_arrays for input from numpy

This requires a net whose first layer is a MemoryDataLayer.
pycaffe: allow 1d labels to be passed to set_input_arrays