Use Blob directly instead of shared_ptr for internal layer buffers

(This PR separates out and extends some of the cleanup from #594 for more expedient merging.)

Many layers have internal buffers. Currently, some are declared as `Blob`, while some are declared as `shared_ptr<Blob>` (and some used to be declared as `shared_ptr<SyncedMemory>`, although that is no longer as of fb8c0616f4827795f50e0b665805403eb3719966).

This PR changes all internal buffers to be `Blob`. Aside from consistency, this prepares internal buffers to be reshapable under #594. There are two reasons for this:
* It simplifies the logic: whether setting up a buffer for the first time or changing its shape, just call `Reshape`.
* Reshapable buffers shouldn't be shared anyway, since other owners may not like them changing shape.