Change initialization to utilize module defined "_defaultOf" functions.

This is an initial commit, capable of being used but not as clean as I would like - ideally there will be no instances of PRIM_INIT remaining in the compiler when I have finished my work on this feature.  I have split the work into many pieces so that the code which logically goes together is for the most part in the same commit.  Details of the major thought process are in the third commit, "Adds compiler functionality for a module-defined _defaultOf function"

tested:
full /std with fifo
full /std with massivethreads (7 errors, same as master massivethreads that I could tell)
full /std with qthreads (but no hwloc, for some reason that wasn't building)
gasnet+fifo with examples
Personally, I think this should live in the string module in modules/internal/String.chpl, and similarly below for the other types that have their definitions in other files (c_string, dist, sync/single, etc..)