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)`
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