• Rewrite ALL THE THINGS!

    This changes the data structure for `Url`:
    
    Rather than having multiple `String` (or `Vec<String>`) components,
    this uses a single `String` that contains the serialization of an URL
    and some indices into it to access components in O(1) time.
    
    This saves on memory allocations and makes serialization and some other
    methods very cheap, as they return `&str` rather than building a new `String`.
    
    As a consequence, most of `src/lib.rs` and `src/parser.rs` had to be rewritten.
    
    Fixes #142.
    SimonSapin committed Apr 17, 2016