Making clients more immutable

- Removing getConfig() and setConfig() from clients to avoid confusion around
  whether things like base_url, message_factory, etc should be able to be
  retrieved from getConfig() or modified using setConfig().
- Adding getDefaults() and setDefaultValue() to customize default request
  options of a client.
- Updating Url class to check if a scheme and host are set before adding
  ":" and "//". This allows empty Url (e.g., "") to be serialized as "".
- Removing dead code from Url class.
- Adding a functions.php function for get_path and set_path so that these
  functions can be used on regular PHP arrays. Collection now proxies to these
  functions when Collection::(get|set)Path() is called.
- Resolves #599.