Bunch of fixes to get sample working.
Rewrite streams, should be really solid & tested now.
Save some registers during an IRQ so we don't randomy stomp them :[