Added `character()` support for algorithmic names.

Partially addresses #2. The equivalent support for `name()` would need some changes to the API, since it needs to write to the user-supplied buffer. (Note that #1 equally needs this change, anyway.)

For your information, by the way, `urllib.request` is not in Python 2. ;(
Ah, right. I wonder if a `save!` and `restore!` macro would make it work, e.g. for `shift_slice_choseong`:

```rust
macro_rules! save {
     ($save: ident => { $($p: pat => $e: expr),* }) => {{
         let $save = *name;
         match shift_slice_byte(name) {
              $($p => $e),*
         }
     }}
}
macro_rules! restore {
     ($saved: ident, $e: expr) => {{
          *name = $saved;
           $e
     }}
}
save!(old => {
    Some(b'G') => save!(old => {
        Some(b'G') => Some(1),
        _  => restore!(old, Some(0))
    }),
    Some(b'N') => Some(2),
    Some(b'D') => save!(old => {
        Some(b'D') => Some(4),
        _ => restore!(old, Some(3))
    })
    ...
    (_, _) => restore!(old, Some(11))
})
```

Although that's pretty strange now that I've typed it out. (You don't need to make this change unless you can find something that really works well. :) )