Support for using Rubber from a local Windows machine

(Remote machines must still be Linux)

- Add local OS detection (Windows, Posix) to BoundEnv class. (To add support for more platforms, see: http://rbjl.net/35-how-to-properly-check-for-your-ruby-interpreter-version-and-os)

- Add ability to write local hosts file in Windows format . Requires to run cmd prompt as admin.

- Writing to etc/hosts and known_hosts files now throw an error if user does not have write access.

- Add 'local_windows' Vulcanizer, including:
     * fixes a known limitation in Bundler when copying/deploying code cross-platform.
     * adds remote library dos2unix
     * add 'use_dos2unix' variable

- If 'use_dos2unix' is set, remote calls 'dos2unix' after code and/or config transfer.
Add Putty support when using Rubber from local windows. Incredibly useful.
Local windows support:
- Add dos2unix task for config
- Run dos2unix on code only if it was deployed via remote copy
- Introduce FIX_LINE_ENDINGS env var to force dos2unix to run
- Refactor rubber:config task to have sub tasks :push and :configure, so we can hook dos2unix between the two steps.
- Remove use_dos2unix variable (which was introduced in early attempts at Windows support)
Fix syntax error in template
Merge branch 'local_windows_v3' of https://github.com/johnnyshields/rubber into johnnyshields-local_windows_v3

Conflicts:
	lib/rubber/environment.rb
	lib/rubber/recipes/rubber/deploy.rb
Fixed a merge conflict.
Avoid issues with nil components in generating local /etc/hosts.
Make sure we never inadvertently display a Windows error message when failing to write to /etc/hosts in Linux.