Tab items are now animated when reordered during a drag event.

The calculateTabViewItemsInFrame: is now split into a method that calculates the positions and one that moves them. The latter provides an option to animate this movement using NSViewAnimation objects. PLTabBarView now conforms to the NSAnimationDelegate protocol and has an instance variable to track when an animation is underway. When it is, the mouseDown: method does not alter the tab locations.
When setting the location of a tab item, its origin and size are now floored.

Without this, tab items would occasionally move slightly while dragging.
Updated documentation in PLTabBarView with minor cleanup.
Dragging a tab item now stops at the tab bar bounds.

In the PLTabBarView mouseDown: method, check if the new point is outside the tab bar bounds. If so, continue to the next event without updating the item’s frame.
PLTabBarItemView now uses a CATextLayer for its title rather than an NSTextField.

This resolves the issue in PLTabBarView mouseDown: method where title were blurry under certain circumstances.
PLTabBarItemView is now a subclass of CALayer instead of NSView.
Split out the mouseDown: logic in PLTabBarView.

The majority of the method is now in mouseDragged: and only the mouseDown: logic (selecting and closing a tab item) are in the mouseDown: method. This fixes the related TODO item.
Improved animation of tab bar items by individually positioning each item.

Split the positionTabBarItemsWithAnimation: method into three methods that may be used to individually position items. PLTabBarView now tracks the animation of individual items and prevents further animations until the previous completes.
Merge branch 'feature-animate_tabs' into develop

The merging branch animates reording of tab items.
Removed PLTabBarItemView and moved all logic for handling the items in PLTabBarView.

Each PLTabBarItemView is now represented as a CALayer object. PLTabBarView manages setting its color when active as well as mouse interactions with each tab item. This object manages the sublayers of each tab using key-value coding to identify the different sublayer components. PLTabViewController has been modified largely to use CALayer in place of PLTabBarItemView and to use the new interface with PLTabBarView to set the active tab.
PLTabBarView no longer exposes its tab layers directly.

All tabs are identified either by index in the tab bar or by name. PLTabViewController now names tabs with the corresponding view controller’s memory address. All public methods for PLTabBarView and many PLTabViewController methods have been rewritten to take tab names instead of tab objects directly.
Moved nearly all logic from PLTabBarView to PLTabViewController.

PLTabBarViewController now acts as PLTabBarView’s delegate and is sent both the mouseDown and mouseDragged event. Also includes other minor changes to help consolidate the public and private method functionality in PLTabViewController.
Improved background and geometry of tab bar.

Now using a CAGradientLayer for the tab background instead of NSGradient in drawRect:. The background layer is an instance variable in PLTabViewController that is reused for the gradient of inactive tabs. No longer use isFlipped and flippedGeometry for the tab view and its items, respectively.
Added a CALayer subclass with sublayer properties rather than using key-value coding to access them.

The CALayer subclass (PLTabBarItemLayer) has four properties for its sublayers, used by PLTabViewController.
Removed several methods from PLTabViewController.

Creation and removal of tabs were only needed in one location so the associated methods were removed. Querying the index/name of tabs is simple enough through the instance variables that PLTabViewController inherited from PLTabBarView that extra methods are not necessary. Other infrequently used methods were also removed.
Updated and added documentation in PLTabViewController.
Merge branch 'feature-tab_layers' into develop

The merging branch converts the tab items from views into CALayers. During the merge, the NSAnimation system was changed to using CATransaction to animate tab movement. This removes the need for tracking the animating tabs in PLTabViewController.

Additionally, the merging branch fixes a TODO item in PLTabViewController when dragging the mouse where the animation could result in overlapping tabs.

Conflicts:
	Liasis/Liasis/TabView/PLTabBarView.h
	Liasis/Liasis/TabView/PLTabBarView.m
Two fixes in PLTabViewController and a method name change.

Fixed an issue in previousActiveTab: where cycling through tabs backwards would stop at the first tab.

Fixed an issue in setActiveTab: where the view controller was made first responder too early in the sequence of events and was replaced as first responder before the method ended.

Changed removeViewControllerForTab: to removeTabWithName: to be more consistent with other methods in the controller.
Moved code for creating and hit testing tab items to PLTabBarItemLayer.

The object now maintains laying out its sublayers and provides methods for determining if points are within its masked bounds and its close button layer.
The close button on tabs are now hidden until the mouse is over the tab.

PLTabBarView now exposes a property to set the close button visibility. PLTabBarViewController sets up tracking areas over each tab and implements mouseMoved: and mouseExited: to update close button visibility. Tracking areas are configured in the positionTabBarItem:withItemFrames:animate: method.

Improved the tabBarItemForPoint: method to handle overlapping tabs.