feat(Key) Allow using annotation to specify binding

This change gives more control when specifying binding. It gives one
option to use annotation when specifying binding

type(Engine, withAnnotation: Turbo, implementedBy: TurboEngine)

Closes #46