ZODB Components: Do not always display bt5 Migrate Action.

* Current user must have permission to add Components in portal_components.
* bt5 must not be in installed state as this script updates bt5 properties.
* There must be some Extension, Document, or Test not already migrated.
ZODB Components: Version was not displayed properly in Component view.
ZODB Components: Import ace_editor 1.1.01.
ZODB Components: inner{Weight,Width} is not applicable to window document (from jQuery API).
ZODB Components: Only Developer Role must be able to invalidate/delete/validate Components.
ZODB Components: Cosmetic: Fix Component Validation Workflow description.
ZODB Components: Developer Role was not returned by getRoles() for users added through erp5.acl_users.

It was only working if the user was only in Zope acl_users but not ERP5
acl_users because getRole() was not monkey-patch in contrary to AccessControl
BasicUser.
ZODB Components: Follow ERP5 Python indentation style in Ace editor.
Add save button to Ace Editor to save source code while staying on the same page.

This has several benefits:

* No need to exit maximize/fullscreen modes to save.
* The cursor position in the editor does not change.

This implementation is hackish because it is too Component-specific, but until
RenderJS is being used, there is no probably no better way.
Make sure that objects created on bootstrap are committed before trying to load them from ZODB.

Because of recently added Component Tool, POSKeyError exception was raised
when trying to load it from ZODB during migration of Portal Type classes and
ZODB Property Sheets (PickleUpdater() in ERP5Site.migrateToPortalTypeClass),
so make sure that there is a commit before loading anything from ZODB.
ZODB Components: No need to migrate Component Tool, only exist since Portal Type as Classes and ZODB Property Sheets.
ZODB Components: Fix deadlock on import lock.

Since a29456b, only import lock is used instead of aq_method_lock, dynamic
modules locks and import lock. However, it was creating another deadlock:

when the import lock is held in one thread (for instance when trying to
perform migration to Portal Type as Classes and ZODB Property Sheets), and an
object is loaded from ZODB, a request is sent to ZEO, and this blocks until
another thread (asyncore) gets the ZEO reply and sends it back to the first
thread.

However, if the asyncore thread receives an Exception, it will tries to import
its module and thus create a deadlock as the import lock is still held by the
first thread.
Remove useless except block and use with statement for lock instead try/finally block.
ZODB Components: Add JS file required to find text within Ace Editor.
ZODB Components: Add Ace Editor settings menu (Alt+p) to set up keybinding styles for example.
ZODB Components: Force resize of Ace Editor on maximize/fullscreen.

Otherwise, without passing the new height/width to resize() and without force,
text is not visible when switching to maximize/fullscreen mode.
ZODB Components: Use pylint to report source code errors/warnings each time it is modified.

Before, 'exec' was used but it is not safe as it executes the source code and
also not so useful as it stops at the first error. So, use pylint instead:

* Report errors and warnings (naming conventions could later be checked too).
* Allow to jump directly in Ace Editor to the message line/column by clicking on it.
* Define properly dynamic packages by setting __path__, otherwise pylint fails
  when a Component imports another one.

Also, split up consistency checking done in validated/modified state and
checking source code everytime the source code is modified:

  Source code error message was previously stored as a workflow variable,
  which didn't make any sense because user would only get error messages on
  Workflow transition, thus use existing Interaction Workflow to check source
  code and set newly defined error/warning properties everytime the source
  code is modified.
ZODB Components: Only Manager or Developer Role should be able to access Component Tools and Components.
Prevent other threads to create erp5.* packages and modules or seeing them incompletely loaded.
ZODB Components: Restore original SecurityManager after running tests.

Tests may login/logout with different users. This fixes
testDynamicClassGeneration.TestZodbTestComponent.testRunLiveTest.