Converted a few of the for-in loops to Object.keys since they are faster and more "correct" without needing to ever check if hasOwnProperty() like usual from one of the classic for loops.
Let drop-down list adaptively change width within reason.
Instead of checking "bookmark.hasOwnProperty" in addSpeedDialEntry() function, check for existence of exclusive key which is the fastest based on jsperf truthy/falsey tests as seen http://jsperf.com/multiple-hasownproperty-vs-object-keys-lookups/11 :) aka it's ~100x faster to check if an entry is a bookmark or a folder vs before :).
Didn't need to create the folder JSON object in the chrome.bookmarks.getSubTree API call so simplified it.
Clean up custom icon function names/logic just so I can base thumbnail function on it.
Unified values get/set in options.js.
Random spaces, semi-colon fixes/cleanups.
Unified the old .hasOwnProperty() calls to "!== undefined", it checks for the existence of a property but it's 100x faster than the hasOwnProperty function call.
Couple random fixes/cleanup before "flexboxification" :P
Take title length calculation out of the scaleSpeedDialEntry() function and made it be done by CSS.
Use optimized array operations on our arrays for traversing and altering the arrays during folderListGeneration which can be 500x-1000x faster vs using for-in loops :P http://jsperf.com/fastest-array-loops-in-javascript/119 for loop reference.
Updates jQuery to v2.1.0pre since it'll be released officially soon anyway and it seems to help, my dial's render time is now ~35ms :)
Few fixes here & there, in-lined the updateSpeedDialEntry function into updateBookmark function since it only sets 2 attributes and doesn't need its own function.
Made clicking the new_entry button make a "new_entry" target and checked for that in the event handler vs check for a 0 length string.
Clarified !== value for popping off array and cleaned up a few things here & there.
Random little changes
Update jQuery to v2.1.0pre since it's awesome.
Instead of using an internal padding value set a thick border.
Switch from .attr to .prop.
Using $(document.body) event handler where able.
Stopped using "px" strings for pixel values since their not needed.
Instead of the #folder_list and #advanced hidden by default in CSS, hide them afterward.
Changed how entries get added to the #dial element, build them up completely before appending them to the dial.  Prevents the need for the extra entry #bookmark.id assignment.
Optimized the way the select list is created as demonstrated in this test: http://jsperf.com/jquery-select-element-creation
Completed .prop() transition.
Put the foundicons into spans instead of various div/i tags,
Removed extra stuff from the hashchange event handler since the important stuff is in the createSpeedDial() function call.

extra: tried out a bunch of different ways to set the entry HTML, http://jsperf.com/html-creation-appending/2 shows a bunch of alternate syntaxes I tried but the raw string/jQuery object seemed best suited and the fastest without compromise of functionality.
Figured out a way to batch add all the entries at once instead of per iteration of addSpeedDialEntry.since changing when entries were added and having the variable be the created object that is manipulated and put into the array for the batch add at the end.
Figured out how to get everything into an array to batch-add entries & new entry once instead of appending each once as its precessed.
Made scaleSpeedDialEntries function operate on all entries at once instead of one at a time.
Re-factored how the new_entry are added and the options gear get added.
The nice clear .contains() string method seems to only work when "Enable Experimental JavaScript" is enabled in about:flags, but wanted to be more compatible, so reverted back to the fastest string search without relying on ! negation.
Simplified the if-else logic a little bit to make JSLint more happy.
Simplified the addSpeedDialEntry function by re-factoring it into two separate functions which helps the entry variable scope, this change also saves ~500KB of ram usage for me.
Put variable declarations in the bookmark API call scope within the generateFolderList function.
Since .html() is used to set the dial content, no need to empty it before-hand since setting html implies clearing existing html content vs before when .appending each new entry to the dial
jQuery update
update jQuery to v2.1.0-rc1
Fixed issue with drag and drop, updated version info