Update to latest Rust.
Some touchups.
Merge branch 'master' of github.com:BurntSushi/quickcheck
Remove Cargo.lock from quickcheck_macros.
More code cleanup.

It looks like rustc has gotten better at inferred to the type of
trait objects.

Also, use a macro to implement `Fun` to reduce churn when adding
support for functions of higher arity.
Fix quickcheck_macros dependencies.

The standard `quickcheck` crate no longer depends on `quickcheck_macros`.
This is partially in preparation for the impending Rust 1.0 stable
release, which will disable syntax extensions.

To use quickcheck_macros, explicitly specify it in your Cargo.toml:

    [dependencies.quickcheck_macros]
    git = "git://github.com/BurntSushi/quickcheck"

The `quickcheck_macros` crate now depends on `quickcheck`. While this
actually is not a compilation dependency of `quickcheck_macros` itself,
it is a dependency for any actual use of `#[quickcheck]`.

Since this requires a change to your Cargo.toml if you were using
`#[quickcheck]` without specifying `quickcheck_macros` in your Cargo.toml,
this is a breaking change.

[breaking-change]
API clean up to "builder" pattern.

A new `QuickCheck` type has been introduced, which uses the builder
pattern to permit configuration. This simplifies the API.

If you were using special configuration before, then you will need
to update your code. Code that was, e.g.,

    let conf = Config { tests: 50, max_tests: 1000 };
    let gen = quickcheck::gen(rand::task_rng(), 10);
    let result = quicktest_config(conf, gen, property);

to this:

    let result = QuickCheck::new()
                            .tests(50).max_tests(1000)
                            .gen(StdGen::new(rand::task_rng(), 10)
                            .quicktest(property);

These cases are probably rare though. The toplevel `quickcheck`
function remains and its semantics have not change, so most users
will not experience a breaking change.

[breaking-change]