BUG: DataFrame.to_stata() uses wrong struct formats and crashes in int64
The relevant code is

``` python
self.DTYPE_MAP = \
    dict(
        lzip(range(1, 245), ['a' + str(i) for i in range(1, 245)]) +
        [
            (251, np.int16),
            (252, np.int32),
            (253, np.int64),
            (254, np.float32),
            (255, np.float64)
        ]
    )
```

and

``` python
self.TYPE_MAP = lrange(251) + list('bhlfd')
```

which maps `h` to int32 and `l` to int64.  

http://docs.python.org/2/library/struct.html#format-characters

shows that `h` is 2 bytes and `l` is 4, and so trying to run 

``` python
struct.pack('<l',2**40)
```

produces an error.

The obvious fix is to use

``` python
self.TYPE_MAP = lrange(251) + list('blqfd')
```

but this will probably produce errors on 32-bit platforms.
