Make debug!, etc. macros not require a format string

The one thing `log` can still do is polymorphically log anything,
but debug!, etc. require a format string. With this patch
you can equivalently write `debug!(foo)` or `debug!("%?", foo)`
rm obsolete iter-trait/option.rs file
auto merge of #5284 : thestinger/rust/iter-trait, r=brson

I missed this when I replaced iter-trait with a `BaseIter` impl.
auto merge of #5278 : brson/rust/logplusplus, r=brson

r?

`log` can  polymorphically log anything, but debug!, etc. requires a format string. With this patch you can equivalently write `debug!(foo)` or `debug!("%?", foo)`.

I'm doing this because I was trying to remove `log` (replacing it with nothing, at least temporarily), but there are a number of logging statements that just want to print an arbitrary value and don't care about the format string.

I'm not entirely convinced this is a good change, since it overloads the implementation of these macros and makes their usage slightly more nuanced.
implement BaseIter for dlist (removing iter-trait)

Closes #2827
auto merge of #5287 : thestinger/rust/iter-trait, r=pcwalton

Closes #2827
librustc: Replace all uses of `fn()` with `&fn()`. rs=defun
libsyntax: Stop parsing bare functions in preparation for switching them over
test: Remove newtype enums from the test suite. rs=deenum
libstd: Remove all newtype enums from std and core.
librustc: Remove newtype enums from librustc
libsyntax: Remove newtype enums from libsyntax. rs=deenum
doc: Remove documentation on newtype enums.
libsyntax: Stop parsing newtype enums
test: Fix tests. rs=tests
librustc: Remove old-style operator overloading