Add Clone() to IKeyboardDefinition and fix implementations.

Fix Clone() so that cloning a KeyboardDescription that the client
only knows to be an IKeyboardDefinition or DefaultKeyboardDefinition
actually produces the right type.

Change-Id: If0a2ad2bbcb88c92ac90ae0bafd26ce8713da5bd