Fixed two issues with bracket highlighting Core Animation.

The primary issue: when switching tabs, the bracket layer is lost and bracket highlighting no longer occurs. The textEditorView in PLEditorViewController is layer-backed, so switching tabs results in changes to its layer backing that lose the bracketHighlightLayer as its sublayer. To fix, check if the bracketHighlightLayer's superlayer is the textEditorView's layer in the animateCharacter:atPosition: method in PLEditorViewController. If not, remove the bracketHighlightLayer from its superlayer and add it to the textEditorView layer.

The bracketHighlightLayer is now retained in the controller's initialization method and released in dealloc.
Fixed an issue where the autocomplete view lost its shadow and rounded corners on switching tabs.

The autocomplete view and autocompleteScrollView in PLAutocompleteViewController are now layer-hosting rather than layer-backed. Added two CALayer instance variables to the controller to track these hosting layers. Set the z position of the autocompleteViewLayer to 1.0 so that the autocomplete view is always drawn above the autocompleteTextView. When switching tabs or opening a file, the layer hierarchy changes so this is required to ensure that the autocompleteTextView does not clip the autocomplete view shadow.
Improved the efficiency of autocomplete by reducing how often it causes parsing.

In PLAutocompleteViewController, parsing through the updateCompletions method is now performed just before displaying the autocomplete view rather than after every text change with the autocomplete view hidden. This change allows for other simplifications:

1) Condensed the setAutocompleteTextViewSize and setAutocompleteTextViewPosition into a single method, setAutocompleteTextViewFrame that is called in displaySelectedCompletion.
2) Check the autocompleteTableDataSource completions count rather than the number of rows in the autocomplete table, reducing the number of times reloadData is sent to the autocompleteTableView.
3) Displaying the No Completions view is now entirely in the toggleDisplayAutocompletions method. It is hidden when hiding the autocomplete view with the setDisplayAutocompletions:withAnimation: method.
Fixed two issues with displaying the selected row in the autocomplete table.

Both issues were in PLAutocompleteViewController.
1) Scrolling to the selected row in the autocompleteTableView now only occurs after the view is displayed.
2) Scrolling to the zero row has been moved outside of the setDisplayAutocompletions:withAnimation: method and is called in doCompletion: and toggleDisplayAutocompletions. This allows it not to be called in tableViewDidReceiveMouseDown:row: so that the table view does not scroll when clicking rows.
Cleaned up the logic in the PLAutocompleteViewController setDisplayAutocompletions:withAnimation: method.
Fixed an issue where the autocomplete timer wasn't properly stopped after whitespace.

In the PLAutocompleteViewController setDisplayAutocompletions:withAnimation: method, first check if hiding the autocomplete view and stop the completion timer if so. Previously, the method would return before reaching the stopCompletionTimer method call if the view was already hidden.
If the user types the only entry in the autocomplete table completely, the table is now hidden.

In PLAutocompleteViewController, the filterCompletionsWithString: method now checks if the filtered completions contain one entry and it is already typed in the superTextView; if so, clear the completions. Minor cleanup in the filterCompletions and textDidChange: methods and documentation.
Removed fixedWidthFontSize() in PLAutocompleteViewController.

This function is now replaced with NSFont methods to get the same information.
Turned off horizontal scrolling in the autocomplete table.
In the PLEditorViewController lineNumberForPosition() function, line numbers now properly begin at 1 rather than 0.
PLEditorViewController now includes compiler directives for OS X 10.7 bug fixes related to Core Animation.

Two bugs were fixed for OS X 10.7 regarding the bracketHighlighLayer: setting the geometry flipped (in initWithNibName:bundle:) and ensuring that the bracketHighlightLayer was a sublayer of the backing layer (in animateCharacter:atPosition). Both fixes are now wrapped in a compiler directive checking if the SDK version is 10.7.
Redesigned the parsing methodology in parse.py.

This commit fixes many issues with introspection of Python source to find assigned variables. In the parse module, parsing is now down by first finding the path through the abstract syntax tree that includes the line number used to define the scope for variable definitions. Added two functions to find the path, _iter_paths() and _get_path(). The Parser class stores the source code and parses it into an abstract syntax tree. It provides the method for finding the assigned variables.

The PLPythonIntrospectionController has been modified to wrap the new approach in the parse module. It now has a Parser object as an instance variable, rather than the parse module and abstract syntax tree. Its parseSource: method sets the source string of the Parser object and the variablesWithLineNumber: method calls the variables method on this object.

In PLEditorViewController, the parseText method no longer needs a try/catch statement as this is handled by the Parser object in the parse module.

Updated the test_parse unittest module to adjust for the new parsing methodology.
Removed many visit methods in the _AssignParser class in the parse module and added tests to test_parse.py.

The removed visit methods were unnecessary as they simply visiting nodes in the node's body, which is already handled by the generic_visit method of ast.NodeVisitor. Added new tests to test_parse.py for if statements, for/while loops, and try statements to ensure that removing these visit methods did not break functionality.
Added support for parsing list, dict, and set comprehensions and generator expressions in the parse module.

Added the four associated visit methods to the _AssignParser class with a _visit_comprehension helper method. Updated the test_parse module to include tests for these nodes.