Added a method to the PLFormatter commentSelection: to comment out the selected lines in a NSTextView.

This method prepends the first non-whitespace character of each line in the selection with the string '# ' to comment it out.
Added a keystroke in the PLEditorViewController to trigger commenting out the selected block of code.

In the performKeyEquivalent: method, intercept command-/ and send the commentSelection: message to the PLFormatter.
Moved the comment string to a constant in PLFormatter defined as PLFormatterCommentString.
Modified the commentSelection: method in PLFormatter to toggle comment blocks on or off.

This method processes the selected block, checking which lines are commented or not. If all are commented, this method uncomments all lines. If any are uncommented, it comments those lines and leaves the previously commented lines unchanged.
Fixed an issue where lines with less than 2 characters were not commented out.
Commenting in/out code blocks now retains the selected range prior to toggling the event.
Added documentation for the toggleCommentSelection: method of the PLFormatter.
Added a new class method to PLFormatter, indentationLocationOfLines:inRange.

This method takes a range of a string and uses indentationLocationOfString:atIndex to determine the location of the first non-whitespace character (i.e. the indentation location) of each line in the range. To handle the case where the input range is outside of the text's bounds, an exception is thrown with a newly defined PLFormatterException string as its name.
PLFormatter method toggleCommentSelection: now makes use of the indentationLocationOfLines:inRange: to determine which lines are commented or not.
Cleaned up toggleCommentSelection: by removing some unnecessary variables and an unneeded array manipulation.
Fixed multiple issues in maintaining the selected region of text while toggling a comment block in PLFormatter method toggleCommentSelection:.
Fixed an issue in toggling comment on lines with less than two characters.

The lineRange variable was not reset for each line range while looping over the indentation positions.
Added a function to PLFormatter.m to check if a line contains only whitespace characters.
PLFormatter toggleCommentSelection: now adds comment symbols (#) at the same column for all lines.

This method now determines the minimum indentation level of all lines in the selected range. With this, it adds the string "# " at that position for all lines. Lines containing only whitespace are ignored for this purpose.
Fixed an issue in PLTabViewController where key equivalents with the option, function, or control key modifiers were never sent to subview controllers.

The performKeyEquivalent: method ignores key equivalents with option, function, or control key. In doing so, it skipped over sending these equivalents to its subview controllers. This has been fixed by moving the message to its subview controllers within the goto bail clause.
PLFormatter now provides two method for commenting out sections of code, namely block comments and traditional comments.

Block comments: uses the string "## " to comment out a block. These are added to a line independent of its current content. As such, they will be added even if a section of code already has these comment strings.
Traditional comments: uses the string "# " to comment out lines of code. These are only added to lines that don't have this already. This introduces a possible issue when commenting out lines of code that are meant to be comments, because they will be toggled off. But it allows for smarter commenting by adding to previously commented blocks rather than adding a new level of comments as the block comment would.

PLEditorViewController provides block comments with cmd-/ and traditional comments with opt-cmd-/.
Added more documentation to the toggleCommentSelection: method of PLFormatter, reflecting the addition of block/traditional comment styles.
Minor improvements to readability of toggleCommentSelection:asBlock: in PLFormatter.
Fixed an exception that was raised when the selected range of text was between 1 and the comment string length and comments were toggled off.
Fixed an issue with determining the uncommented lines in toggleCommentSelection:asBlock:.

The range of the line used to check against the comment string was incorrectly determined. It is now correctly set to a range starting at the minimum indentation level with a length of the comment string.