Allow comments in commit message area
Require comments to start a line
Correctly determine working copy root when inside submodule.

This fixes error messages like "fatal: '/path/to/file' is outside repository" when using the bundle with git submodules.

`Git.path` assumed that the git dir would always be located directly below the working copy root. However, this is not (no longer?) true when working with submodules: The git dir of a submodule is nested inside the parent project’s git dir.

Using `git rev-parse --show-toplevel` (available since Git 1.7.0) figures this out correctly, even for submodules.

Similar incorrect code existed in `Compare Branches.tmCommand`. This was dead code however (`path` not being used anywhere afterwards), so I removed the line there completely.
Fix typo in Parsers#parse_status_hash

Make spec "should parse a status document correctly" (`lib/commands/status_spec.rb`) pass again.
Add Gemfile to document RSpec version requirement.

Specs need to be run with RSpec 1.
Fix specs.

Git commands like `status` and `log` are now called with additional parameters, so I updated `Git.command_response` mocks accordingly.

Also there were some problems with redefined constants and nil strings that seem to be related to Ruby versions > 1.8 (fixes should be backward compatible, though).

I commented out "should auto-expand the path when filtering to a relative path" (in `lib/commands/status_spec.rb`), as this feature was (accidentally?) removed in 8ecadc8fb26.
Make parameter to Git#git_dir optional.

`paths.first` seems to be a reasonable default value.
Fix Branch#current_name for submodules.

The fix is simple: Just use `Git#git_dir` instead of assuming that the git dir is `#{base_path}/.git` (which is not the case when working with submodules).
Trivial: remove extraneous whitespaces
Only show output window after closing commit window

When the commit window was a separate program and required siginificant time to launch, it made since to initially send some kind of information to the users via the output window. However, now that the commit window runs as part of the Textmate, it may be a better user experience to delay output until after the commit window is closed.
Running diff from commit window will now show changes since HEAD

By default, running “git diff” shows local changes that have not yet been staged, so if the user had already added (a version of) the file to the staging area, the diff button would only show changes done since that, which is misleading (as we commit to HEAD not the staging area).

A minor issue exists for newly initialized repositories without a HEAD to diff against, here the diff command actually fails, but we ignore the return code and show a blank diff.