Make psutil.BOOT_TIME fallback for /proc/uptime

Method used with psutil.BOOT_TIME is subject to changes when clock_settime
changes time, /proc/uptime is not.
Use psutil module for `user` segment
Replace memoize with threading where applicable

NOTE: Documentation now gets attached to *classes*, not actual segments. Hiding
      away classes (by changing their names to start with `_`) and/or doing

          self.__doc__ = self.__class__.__doc__

      does not work (hiding classes only hides documentation completely). I am
      not familiar with sphinx enough to say how this should be fixed.

Ref #168
Some fixes for flake8