Updated Stream.read() API to make more sense
Use FRAMES_PER_BUFFER_UNSPECIFIED when appropriate
Some code updates

- Narrow the scope of two unsafe blocks
- Expand some comments
- Add duration_to_pa_time function