use a ReentrantMonitor instead of a Monitor for the DownloadDevice component

Prevents deadlock when InitializeDownloadMediaList enters the monitor,
then
calls DeleteAllItems, which also tries to enter the monitor
delay the library base components to profile-after-change
fix up MediaItemControllerCleanup and register for profile-after-change
correct the CDDeviceController category registration
delay sbLibraryImporterManager until profile-after-change
delay sbAlbumArtService till profile-after-change, add entries for fetchers
delay sbDeviceManager till profile-after-change
register DatabaseEngine module for final-ui-startup directly
sort the binary components list for win like mac and linux
register the sbIRUIImportService interface for all platforms
register sbMediaListViewMap for topic directly instead of profile-after-change
register PlayQueueService as a service, and directly for sb lib man ready topic
d'oh, fix sbGlobalHotkeys's generateNSGetFactory call
don't remove observers that aren't self-added, i.e. topics in xpcom registration
don't build browser tests in vendor deps
update device event tester components
xpidl doesn't like CRLF endings in idl files, also fix first line spacing
update test harness module and components
move tabbrowser-tab binding into tabBrowserTab.xml
move tabbrowser-arrowscrollbox binding into tabBrowserTabStrip.xml

I don't think this binding changed from the old version, as git says there
aren't any changes in tabBrowserTabStrip.xml