Add POC to what a generic data/callback function interface would look like.
Refactor the callback wrapper CurlCallback to be a trait and accept a pairing of data/unsafe callback function. This is effectively a significant refactoring and brings us closer to providing a type-safe interface to the option handling mechanism.

Before work in this branch is complete, the following needs to be done:
  * Add error checking on all setopt calls
  * Fix documentation to be up-to-date
  * Add safe wrapper around slist
  * Add enum to represent the various curl options (may remove the variants of easy_setopt* after this is done)
  * Add default error handling to the setopt class of functions
  * Add an enum to represent the various options that are available
  * Make the primitive value setopt methods module-private (removes some ugliness)

Still need to do the following:
  * Modify the docs to be up-to-date
  * Figure out what to do about the setopt_callback interface (there's no way to parametrise enum values by type)
Improve docs slightly (rustdoc still won't regenerate them for me).
Merge pull request #3 from vladimir-lu/generic-fn-trait

Add a safe enum wrapping for setting curl options, a callback interface that is encapsulated in a trait