[WIP] Modernizing printing the functions.

This makes the solid, segment, and human printing nicer with precision control
and supression of zeros using NumPy's set_printoptions function.

Stuff to do:

- [x] Update tests that check the printing (this should make the tests more fail safe because we now have lower precision)
- [x] Make the `__str__` methods call the print function?