basic byte and numeric sort

includes tests for numeric sort

this implements #219 
Instead of `fail!()`, please use either:
```rust
crash!(1, "Invalid options\n{}", f)
```
or
```rust
{
    show_error!("Invalid options\n{}", f);
    return 1;
}
```