Check candidates after ranges

This way builtins are checked for correctly when the
range isn’t found
Add initial ModuleCache spec
Add relative path cache spec