Use dill to pickle whenever available

[dill](https://github.com/uqfoundation/dill) can pickle almost anything. As a result it will allow us to avoid errors like this: http://stackoverflow.com/questions/17960296/trouble-using-a-lock-with-multiprocessing-pool-pickling-error

To reproduce:
```python
import billiard as mp
import Queue

def foo(queue):
    pass

pool=mp.Pool()
q=Queue.Queue()

pool.map(foo,(q,))
```
Now install billiard and dill with this branch and it should work.