Switch /etc/hosts management to use a template

I noticed the current hostname role alters the local loopback alias to use the hostname when it's provided as a variable.

```
127.0.0.1  localhost
```
becomes
```
127.0.0.1  myhostnamevariable
```
Having read around a bit I realised this isn't as bad as I first thought, so it's perhaps not a bug, but it still seems unwise to remove the localhost alias. I've reworked the /etc/hosts changes to use a template, changed some of the defaults and introduced a public_ip variable.
Essentially /etc/hosts should now match the advice given in the debian docs:
http://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_hostname_resolution

Thoughts? Does this need docs, or is it fairly obvious what public_ip is?