Auto-detect of keyword changes in build

Extensions in createDefaultKeywordList so it stores the state of the keyword list during generation, and also uses this for performing smarter builds.