Added support for read_fwf() as in R.
I added a simple function like R's read_fwf().

It also made sense to refactor read_csv() and read_table() to redirect to a new function _read() which takes the parser's class as input. I needed this for the FixedWidthFieldParser which needs to override the TextParser in order to provide a custom reader for the fields. Please review; the tests pass.

Also, I made the column spec ("widths") 
- zero-based, and
- inclusive on both the from and to fields (e.g., a colspec of (1,2) has two characters)
  I'm not sure that's the best; I think in practice a lot of column format specs start counting at one, but I haven't done a survey or anything, feel free to change it.  Maybe we should support both.

A broader point about the behaviour: how should it handle non-ascii data, especially with variable width encodings like UTF-8?

At present, I think this will do different things according to the version of Python:
- In Python 3, it will decode the file using the specified encoding you pass to the file, and count by character across the line (i.e. `字` is one character). If you don't specify the encoding, a platform default encoding is used, and unexpected bytes are replaced with the replacement character.
- In Python 2, it will completely ignore the encoding parameter and count bytes, so `字` is three bytes (if the file is UTF-8).

I guess counting bytes is more consistent with what other tools mean by fixed width, but we should decode strings in line with the encoding parameter.
 I've made changes recommend by Thomas. 
I've added more tests.
I've done some careful refactorings of the read_\* functions for clarity.
Tests pass.
Please pull.
 OK, I've made a couple more minor comments. I'll like someone with a fresh pair of eyes look over this - pinging @wesm and @adamklein.
 This all looks pretty good to me. I'll take it for a spin in the next couple of days and merge it in. Thanks for the PR!
 Sweet thanks all for this, very nice work, merged it in. 

@blais you'll want to fetch pydata/master now and `git reset --hard upstream/master`  (where upstream is the remote for pydata/pandas) to fix up your master
