Let's do this.
Created attachment 294972 [details] Patch WIP
Created attachment 294977 [details] Patch WIP
Created attachment 294978 [details] Patch WIP
Created attachment 294986 [details] Patch
Committed r208824: <http://trac.webkit.org/changeset/208824>