Remove hardcoded paths

* added helper functions to return variables for system we are running on
* removed hardcoded paths and socket type

This will allow us to expand to other operating systems without changing too many files. 
I've found that not to actually be true. We need to be careful where these paths are being used.
We've actually close to standardized on using path everywhere in our code base. We may need to fix it, but since we do stuff like "create a cloud-init file and upload it to be used on an Ubuntu machine" we need to actually be extra careful about our slashes. Because you might generate the paths on a machine that uses different slashes from the machine where that path is actually used.