Improved the search by including a levenshtein distance calculation which enables the docs search function to be more forgiving for spelling mistakes
Updated the licensing information for the Levenshtein distance function
doc: Monty Hall simulation for std::rand

A larger example for std::rand
Omit unnecessary stack slots for ignored return values

If we have an immediate return value that doesn't need to be dropped, we
don't have to create a stack slot for it.
Emit lifetime end markers for allocas for ignored return values
doc: More efficient Monty Hall simulation
doc: use //! instead of /*! ... */ in std::rand
collections, unicode: Add support for NFC and NFKC
remove unused field CrateContext::uses_gc
Refactored syntax::fold.

Prior to this, the code there had a few issues:

- Default implementations inconsistently either had the prefix `noop_` or
  not.
- Some default methods where implemented in terms of a public noop function
  for user code to call, others where implemented directly on the trait
  and did not allow users of the trait to reuse the code.
- Some of the default implementations where private, and thus not reusable
  for other implementors.
- There where some bugs where default implementations called other default
  implementations directly, rather than to the underlying Folder, with the
  result of some AST nodes never being visited even if the user implemented that
  method. (For example, the current Folder never folded struct fields)

This commit solves this situation somewhat radically by making _all_
`fold_...` functions in the module into Folder methods, and implementing
them all in terms of public `noop_...` functions for other implementors to
call out to.

Some public functions had to be renamed to fit the new system, so this is a
breaking change.

[breaking-change]
Add a few more derivings to AST types
Port Rust to DragonFlyBSD

Not included are two required patches:

* LLVM: segmented stack support for DragonFly [1]

* jemalloc: simple configure patches

[1]: http://reviews.llvm.org/D4705
New Guide: crates and modules
auto merge of #16046 : dotdash/rust/call_ignore_alloca, r=pcwalton
speed up static linking by combining `ar` invocations
auto merge of #15956 : steveklabnik/rust/guide_crates, r=pcwalton

Also fixes a couple of filesystem references that I forgot to change. :sweat_smile:
Update disclaimer to improve clarity and intent
librustc: Typeck & record the count expr in TyFixedLengthVec.
libsyntax: Don't ICE on macro invocation in count expr of fixed array type.
Add pretty=typed test support to compiletest and add a test for fixed size arrays.