Make better use of targets

Currently, nearly every service unit in this repository has a corresponding target unit, most of which are identical to each other with only the description changed. I gather that the intent of this is to make it easy to symlink any one of these targets as `default.target`, but it's a very inefficient solution.

This change creates three common target files which roughly mirror systemd's `basic.target` and `graphical.target`. It brings a number of benefits which are outlined in more detail in the commit message, but the main advantage is that users can use the familiar `systemctl enable` and `systemctl disable` commands to manage their user sessions instead of manually symlinking `default.target`. This creates a more uniform user experience as well as an improved ability to mix and match desired units.