Rewrite KinematicCharacterController as a managed class that doesn't need IDisposable.
Rename CharacterControllerInterface to ICharacterController and make it a proper interface class.