Fix various `require` and `File.join` calls.

In many cases it's safe to assume the load path will be setup correctly
at runtime, eliminating the need for absolute paths. For instance, in
your bin/synx executable, RubyGems sets the load path such that you can
just `require "synx"`. When you use RSpec, it also sets the load path to
allow you to use `require "spec_helper"`.

I also cleaned up the `File.join(File.dirname(__FILE__)...` stuff to use
the more idiomatic `File.expand_path`.

Hope you don't mind all the PRs. There are more coming too. You can thank
@ayanonagon for her inspiring talk on OSS ;)