Generate some useful case class conversions with macros

This is in the vein of https://github.com/twitter/scalding/pull/1037. It seeks to reduce the boilerplate when working with case classes.

Note: I copied some of the code from that PR, because the idea that emerged there is that some of the really common code could go here, since bijection is a project with very few dependencies, and upon which many other projects depend.

I need to add tests.

Also, in the future this can be made a lot nicer with the fundep work in macro paradise... right now you can't sort of be in between with the type checker, so the caseClassToTuple isn't as nice as it could be
It might be worth using:

```scala
try { Success(code) }
catch {
  case NonFatal(e) => Failure(e)
}
```
Which is to say, inline the Try creation so that there is not another closure in there, while we are trying to improve performance.