Support multiple shells

I wanted to use this for my zsh shell so I updated it to allow multiple shells.

I also extracted most segment functionality into functions with an eye toward making this customizable.

Finally I updated the README with usage instructions.