Separate IO and PrimIO
PrimIO is the internal primitive, IO is the user version which requires an
explicit World token to be passed in which programmers have no access to
directly.
Fixes #185 and fixes #325