Add TypeclassBijection

This is in response to the conversation in https://github.com/twitter/bijection/pull/182. It has no dependence on macros (though if we can get it working, they will make it much more useful!).

Either way, if you try to run the tests, you'll see that they diverge.

```./sbt "bijection-core/testOnly com.twitter.bijection.TypeclassBijectionLaws"```

returns

```
[error] /Users/jcoveney/workspace/github/bijection/bijection-core/src/test/scala/com/twitter/bijection/TypeclassBijectionLaws.scala:17: diverging implicit expansion for type com.twitter.bijection.FakeAlgebird.Semigroup[TypeclassBijectionLaws.this.A]
[error] starting with method typeclassBijection in object TypeclassBijection
[error]     implicitly[Semigroup[A]]
[error]               ^
[error] one error found
[error] (bijection-core/test:compile) Compilation failed
```

This is the error that Derived was trying to work around.. I don't think the TypeNotEquals is necessary, but maybe that's the issue. Hm. Any ideas, @travisbrown ?
this should be in TypeclassBijection if you ask me. This will be common one. Also Equiv would be interesting there.

Do this, and I think we should merge.