Better treatment for complex numbers
This fixes #1083.  I checked that the number of failing tests (SKIP=38, errors=5, failures=34) do not increase with these change sets.

BTW, in form_blocks why not simply do

``` python
    if float_dict:
        ...
```

instead of calculating length?:

``` python
    if len(float_dict):
        ...
```

Oops I have NOSE_DOCTEST_TESTS=t and NOSE_WITH_DOCTEST=t and that's why I had failing tests.  There is no fail/error when I remove these envvars.
 The bug I fixed in bae81555be2c16cb191b5c9f2b9f9f305eea53d5 is very serious one and it could have effect even without complex number implementation I added.  It is probably a bug in numpy.  Try the following code and observe sorting fails.  I checked with numpy 1.6.1.

``` python
>>> from numpy import dtype
>>> sorted([dtype('bool'), dtype('float64'), dtype('complex64'),
...         dtype('float64'), dtype('object')])
[dtype('bool'),
 dtype('float64'),
 dtype('complex64'),
 dtype('float64'),
 dtype('object')]
```
 BTW, I am using complex64 here but it should be complex128, right?
I noticed just now.
 Yes, should be complex128
 Merged this in. Should make a sweep and change complex64 -> complex128 at some point, though
