new developments in abinito (big patch)

Hi Shyue, 

I've been refactoring a lot of code in abinitio and I've added new features. Sorry for pushing such a big patch. 
In the forthcoming pull requests, I will try to commit localized changes in order to facilitate the work of the project leader. Note that now abinitio requires two external packages: pyYAML and pydispatcher (https://pypi.python.org/pypi/PyDispatcher/2.0.1). The latter is a very handy and lightweight package I use for implementing  the observer pattern via signals. I haven't added this package to the list of official dependencies of pymatgen but maybe it's worth considering its inclusion.

All the best,
Matteo