IDE: Optimize KeyMappings, add a cache for commands and eliminate a linear search.

git-svn-id: http://svn.freepascal.org/svn/lazarus/trunk@47124 4005530d-fff6-0310-9dd1-cebe43e6787f
IDE: Minor refactoring in TComponentPalette.OnScrollBoxResize.

git-svn-id: http://svn.freepascal.org/svn/lazarus/trunk@47125 4005530d-fff6-0310-9dd1-cebe43e6787f
IDE: New TComponentPage class. Move some methods from TComponentPalette to it.

git-svn-id: http://svn.freepascal.org/svn/lazarus/trunk@47126 4005530d-fff6-0310-9dd1-cebe43e6787f
IDE: Move ReAlignButtons logic to TComponentPage class.

git-svn-id: http://svn.freepascal.org/svn/lazarus/trunk@47127 4005530d-fff6-0310-9dd1-cebe43e6787f
IDE: Remove an exception from TComponentPalette.AssignOrigCompsForPage. Can be triggered in some strange cases.

git-svn-id: http://svn.freepascal.org/svn/lazarus/trunk@47128 4005530d-fff6-0310-9dd1-cebe43e6787f
IDE: Store Index of a page in Pages into ComponentPage itself.

git-svn-id: http://svn.freepascal.org/svn/lazarus/trunk@47129 4005530d-fff6-0310-9dd1-cebe43e6787f
IDE: Delay creation of palette component buttons until a page is selected.

git-svn-id: http://svn.freepascal.org/svn/lazarus/trunk@47130 4005530d-fff6-0310-9dd1-cebe43e6787f