Better layering

Mainly, remove references to `construct` outside of `base`.  This is perfectly natural in denselocalarray (in `zeros` and `ones`), but is a *bit* hacky in random.  Be sure to check it out.

Also a few other refactorings:
1. Remove mutable objects as default arguments in a few places
2. Move a couple test functions and util functions around to more natural spots