Adding exercises from the Software Carpentry 4.0 website
Moved exercises into subfolders of the corresponding topics
Merge pull request #34 from pipitone/swc_exercises

Exercises from the Software Carpentry 4.0 website
Instructor notes for teaching git via collaboration on GitHub.

The focus of the lesson is to have students contribute to a repo on GitHub in
which we are building up a list of the things they are most interested in
learning at the boot camp. Requires everyone have a good internet connection
and that at least some of the participants sign up for GitHub.
get-my-ip.py: Add a script for getting your public IP address

This will help students connect to each other on the LAN during class.
Note that if you ping a host across a NAT, you'll get your IP inside
the NAT, not the NAT's IP.
get-my-ip.py: Python 2.x sockets can't be used in 'with' statements

They don't have __exit__.  Use an explicit try/except block to be
compatible with both 2.x and 3.x.
Adding README and instructor notes for new Python with ipythonblocks section.

This section will cover teaching basic Python via ipythonblocks.
Adding ipythonblocks module at version 1.5.
Adding material related to introducing students to RGB colors.
Adding material for "Playing with Blocks" section.

This section covers introductory Python such as indexing, variables,
for-loops, if-statements, and slicing.
Adding material for the "Building Blocks" section.

This section covers reading files and working with lists and strings.
swc-windows-installer.py: Setup msysgit to act like *nix systems

* Install `nano` 2.2.6.
* Add `ipython` and `nosetests` command line entry points.
swc-windows-installer.py: Cleanup whitespace
swc-windows-installer.py: Separate requests import from stdlib imports

Python-requests [1] is not part of the stdlib.

[1]: http://docs.python-requests.org/en/latest/
swc-windows-installer.py: Avoid writing nano.zip to disk

It's already in memory, and we're going to use it again immediately.
Avoiding the flush-to-disk is both more efficient, and easier to clean
up.
swc-windows-installer.py: Extract nano directly to the install directory

This is more efficient than "extract to . and then copy".  I also
renamed the install_nano() argument.  The function doesn't care that
we're currently passing the Python script directory; it will work
perfectly well with a different directory in the PATH.
swc-windows-installer.py: Simplify `ipython` wrapper

This matches my system's `/usr/bin/ipython-2.7`, and is the hook
defined in IPython's setupbase.py:

  'ipython%s = IPython.frontend.terminal.ipapp:launch_new_instance'

This should handle the 'notebook' option internally.
swc-windows-installer.py: Use `with` to write script wrappers

From PEP 343.  This gives you automatic file descriptor (file handles
on Windows?) cleanup on errors.  Also use os.path.join() to build the
paths.

[1]: http://www.python.org/dev/peps/pep-0343/
swc-windows-installer.py: Use lists for file content

This allows us to keep the usual Python block indentation while still
producing the appropriate wrapper content.
swc-windows-installer.py: Use the stdlib's urlopen()

This way I can test the script (on Linux, but whatever) without having
to install an additional package.