Fixes for the previous commits (still outstanding: for non-transient perspectives, screen gets added before perspective init)
Fixed inverted expected/equals order for code
Progress on UF-89: allow screens and editors to belong to a perspective

This commit includes a major refactoring: perspective management has been pulled from
AbstractWorkbenchPerspectiveActivity and PlaceManagerImpl and put into the new
PerspectiveManagerImpl type. Unit tests abound.

There are still loose ends (especially around the JavaScript perspective activity,
which seems not to be a managed bean.. this breaks the Showcase app)

Release note stuff:

RN: Perspectives are now transient by default. to have their state saved and restored automatically, use the new isTransient parameter in the @WorkbenchPerspective annotation, or return true from isTransient() if implementing the WorkbenchPerspective interface by hand.

RN: You now specify if a perspective is transient or not in the PerspectiveActivity class rather than the PerspectiveDefinition that it produces. This solves a chicken-and-egg problem where the framework was always asking for the default perspective definition even when it should have been asking the server for one. The @WorkbenchPerspective annotation now has an isTransient parameter that you can use to control the isTransient() return value in generated PerspectiveActivity classes.

RN: The JavaScript perspective definition now uses is_transient (default true) to match the name and default value of the @WorkbenchPerspective annotation. The is_serializable (default true) flag has been removed.

RN: Workbench parts (panel tab bar and list bar items) now always appear in the same order as they were added to the PanelDefinition. This means tab and list order is now stable for both transient and non-transient perspectives.