Limit large data autoreleasing to reduce memory (fix #39)

* Prefer ARC-scoped release rather than autorelease, so that large data is freed quicker.

* Creating new entry writers and opening new channel input and output is now by convention "ns_returns_retained", which stops autoreleasing on returning large data.

* Most data now created with "alloc" and "init" instead of "data", which stops autoreleasing on creating large data.

* Create autorelease pools around data block calls, which limits the scope of any large data autoreleasing in client code.