Update URL parsing implementation

Better supports `scheme:///path` and `scheme:///`.
Add `stream_metadata` to stream wrapper

This adds support for functions like `touch`.
Add `touch` acceptance test
Test touching new and existing files