Improve python wrapper

This work-in-progress seeks to polish the python wrapper, document, and include more detailed examples.

- [x] standardize python mean to binaryproto mean 47ec9ac
- [x] input preprocessing for Caffe (mean subtraction, scaling, channel order) 8da2a32, 96cd02d
- [x] automagic input and output blobs (no matter the number) 56ca978
- [x] batch inputs to net 1b23680
- [x] friendly forward/backward to prepare blobs/diffs and unpack output 0e5a5cf, ac5e6fa
- [x] handle ndarrays throughout, instead of lists 31907b5
- [x] properly separate responsibilities between the pycaffe wrapper, the imagenet wrapper example (wrapper.py) and detection example (detector.py)
- [x] rewrite examples for completeness to show how to format inputs, compute the forward pass, and read off outputs and extracted features
- [x] raise exceptions instead of crashing the library. Done in part by 76c255449f62232f1179fecf19f1188f53c22600 thanks to @longjon–adopted for blob arg checking in 9d4324e
- [x] document, with feeling: docstrings written. TODO: an introductory guide and discussion of blob wrapping / synced memory.
- [x] ~~fix handling of gpu memory~~ seems like gpu blob access is alright for now (provided Forward or Backward are called, since they will trigger syncing) see https://github.com/BVLC/caffe/pull/311#issuecomment-40047852
- [x] save example notebooks on durian for timing reference