Some bug fixes and a jQuery Mobile 1.4 demo/test.

I ran into a few issues with your "builtLayouts" code changes, and have addressed them here.
I'm also including a demo/test page for jQM 1.4 which contains the code I'm using in my application for destroying the keyboard on hide.  
I haven't yet run this new approach on my ARM industrial device, but I'm hopeful it will improve the performance. I will let you know how it goes.  Thanks for the "builtLayouts" changes -- it's a good idea.

One other thing I want to point out, is that "custom" layouts will be problematic with builtLayouts if you try to use more than one custom layout in a page.  That will need to be addressed.
 
---
Added demo page for jQuery Mobile 1.4.
Fixed focus issue in extension-mobile.
Fixed issue with startup() not creating $preview or checking the builtLayouts cache.
Added null check of $keyboard before calling .hide(), to avoid null exception if the keyboard has been destroyed.
Added back 'return container' to buildKeyboard.