Store bundles in a sorted dictionary

By storing bundles in a sorted dictionary (dictionary + list of keys), the bundle does not need to be reparsed  during installation if it has already been initialised, and any additional options passed in the original command are kept.

This changeset is also an initial attempt to stabilise the name vs spec naming convention, where a bundle spec is whatever is used to specify a bundle, be it a name, user/name, full uri, etc., and name is the name of the bundle that will become a directory under the bundles directory.

This changeset is the foundation for a couple more that I intend to implement, I've listed them as issues in my fork, please let me know what you think.

I have tested these changes with a modification of the minimal vimrc (to include couple more bundles) and with my own vimrc with some modifications to make it compatible (I'm stuck in the events branch, but this is one step on the way out).

Also, I added some comments while I was trying to figure out the code, I left them there, I thought they wouldn't do any harm.

So, what do you think, is this vundle material?

This is in response to the conversation in gmarik/vundle#87