Parse /proc/meminfo for accurate memory usage info

It turns out `os.freemem()` doesn't account for buffers/cache, leading to wildly
inaccurate results on linux systems.  By parsing the data in `/proc/meminfo`,
if it's available, we can try for more accurate data, and then fall back on the
os methods if we're on a system where `/proc/meminfo` isn't available.

This also removes the impractical and unnecessary Writable Stream interface, as
these changes break that API beyond repair.
Refactor tests, use setImmediate to allow async time