Refactored enum interfaces

Signed-off-by: Tom Wright <tom@inflatablecookie.com>
Moved Callback to core\lang

Signed-off-by: Tom Wright <tom@inflatablecookie.com>
Converted callables to use core\lang\Callback

Signed-off-by: Tom Wright <tom@inflatablecookie.com>