Changed preexec to use bash arrays of functions.

- Edited some comments. Going to pull it into its own module.
Fixing preexec to be more resilient.

- Append semicolon to existing PROMPT_COMMAND if it doesn't already exist.
Removed BH aliases.

- Put any remaining logic from them back into the PRECMD function.