platform/minimal-net: Implement better idle behavior.

The minimal-net target, as currently written, wakes up the
CPU every millisecond to check for packets, and will only
react in real-time to input from stdin. If you are running
this on a laptop battery, your battery will quickly drain.

This change allows the CPU to idle when there is literally
nothing to do while still being responsive to input from
stein and/or incoming packets. This fix should signficantly
improve performance while significantly improving power
usage. Win-win.

Also added `_xassert()` implementation so that the contiki-
provided `assert()` macro will work properly when used
on this platform.
platform/minimal-net: Better, more seamless support for OS X.

This patch enables automatic route setup and cleanup when
starting and stopping the minimal-net target on OS X.

Both IPv4 and IPv6 are supported.

Using the minimal-net target on OS X was absolute hell
before I came up with this patch. Now it is painless.
platform/minimal-net: Print out pseudo LED status.
sys/clock: Autosleep: added `clock_sleep_with_max_duration()` and example AVR implementation.

Contiki support for "automatic" sleep (autosleep) can be easily
implemented with the addition of the CPU-specific function
`clock_sleep_with_max_duration()`. This function must be implemented
in such a way that any interrupts that occur will cause it to exit
immediately after the interrupt is handled. This is normally
implemented by setting a timer to generate an interrupt at the
requested expiration and then putting the microcontroller into
one of its built-in sleep modes. In the main run loop, you then
call then method when you have nothing to do, passing as an
argument the point in time at which you know you will have something
to do. If you are familiar with asynchronous socket IO design
patterns, then you can think of `click_sleep_with_max_duration()`
as a more simple verison of `select()` or `poll()`---except that
the interrupts pretty much handle themselves.

This pattern allows the system to sleep implicitly when it has
nothing to do, while still being responsive to timed events. For the
most part, after you implement it you can forget about it.

The key is, of course, having a reasonable implementation of
`clock_sleep_with_max_duration()` for the platform you are
interested in. I've included some example code for the avr-raven
and avr-ravenusb platforms to show how to use this function
in your main loops, but I don't yet have a reasonable implementation
of this function yet for the AVR CPU---it is just a stub.

This technique is not limited to AVR microcontrollers. Any
microcontroller which implements a sleep mode which can be awoken from
interrupts is a prime candidate for autosleep.
avr/bootloader.c: Now compatible with bootloaders which always run first.

The boot loader now knows when to go into bootstrap mode by looking for a specific EEPROM value.
avr/radio/rf230bb: Cleanup and add hooks.

Removes references to the old rf230 code, which isn't being used
anymore.
avr/usb/rndis: Large refactoring/cleanup.

Removed a lot of jackdaw-specific stuff and made it more flexible.
cpu/avr: Makefile additions and fixes.

cpu/avr: Makefile fix for generating HEX files.

cpu/avr: Added "AVRDUDE_MCU" configuration parameter.
core/net/uip: Rename `uip_ethaddr` to `uip_lladdr`.

There isn't really a good reason I can think of for these
to be different between IPv4 and IPv6.

squash! core/net/uip: Rename `uip_ethaddr` to `uip_lladdr`.
avr/settings: More documentation, bug fixes, refactoring.
core/net/uip-ds6: Make `uip_ds6_maddr_add()` and `uip_ds6_maddr_lookup()` const-correct.
core/net/resolv: IPv6 support and improved API. MDNS responder and resolver support.

This patch updates the DNS resolver to support IPv6 and introduces
an improved API for looking up DNS entries.

This patch also adds optional suport for MDNS lookups and responses
to the DNS resolver.

--------------------

core/net/resolv: Switch default IPv6 DNS to use Google's Public DNS.

This was previously using HE's public DNS, but now that
Google has IPv6 support for their public DNS it seems
appropriate to use them as the default.

Note that this default only makes sense if the node has
access to the IPv6 internet. Nodes should provide a way
to change (or auto detect) the appropriate DNS server
in such cases.

--------------------

core/net/resolv: Update to contiki coding style guidelines.
cpu/native: Added fake eeprom device to native target.

This is useful for testing code which uses the EEPROM without running
the code on the actual hardware.
core/lib/settings: Generalized settings to work on any target that supports the EEPROM interface.
core/lib/settings: Cleanup to adhere to Contiki code style guidelines.
Removed unused `platform/native/dev/eeprom.c`.

This has been replaced by the pseudo EEPROM implementation
in `cpu/native/dev/eeprom.c`. I'm removing it because it is
conflicting with the new implementation.

It looks like this one hasn't been used in a while, because
`node.h` doesn't seem to be anywhere in Contiki anymore.
Merge branches 'native-target-osx', 'autosleep', 'avr-updates', 'settings' and 'mdns-resolv'