Add ability to exclusively lock a readable stream

Closes #241. Adds the new getReader() method to readable streams, which returns an ExclusiveStreamReader instance that can be used to read from and observe the stream while denying anyone else the ability to read from or observe it. The implementation of pipeTo makes use of this, and other constructs like the the consume-body algorithm of Fetch are anticipated to make use of this (see e.g. https://github.com/yutakahirano/fetch-with-streams/).