Don't run the destructor on the root console

This makes our console handling closer to the way libtcod does it. The root
console is quite different from an off-screen console. For one, it always
exists (although you usually initialise it which creates a window).

Since of the officially supported bindings (C, C++, Python, Lua) return the
console object on `init_root` whereas we do and run a destructor when it goes
out of scope, things get confusing to existing libtcod users who can start a
simple loop like this:

    Console::init_root(80, 25, "test", false);
    while !Console::window_closed() {
        Console::flush();
        let key = Console::wait_for_keypress(true);
    }

None of these functions require the console object, so this will just close the
window as soon as it's created.

So instead, the `Console` is now an enum with two variants: `RootConsole` and
`OffscreenConsole`. The former gets returned by `Console::init_root` and can
also be referenced at any time with `tcod::RootConsole`. The latter can only be
created with `Console::new`, wraps the `TCOD_console_t` object and runs
`TCOD_console_delete` in its destructor.

Closes #5
Derive PartialEq and Show for KeyState
Add a minimal game loop example

This just initialises the root console and prints out keys until the window is
closed.

The example doesn't call any non-static methods on the Console object and as
such would not behave correctly with having a destructor run on the root
console.
Merge pull request #29 from tomassedovic/root-console

Don't run destructor on the root console