Add tests and futures related to module, variable, and type name interactions

It was discovered that when a type (specifically "object") and a module have
the same name, their names are interpretted as multiple definitions.  We think
these should not conflict, so add two futures covering the cases where it can
occur (so that some good Samaritan doesn't fix half the problem).  Additionally,
we didn't seem to have any tests that covered the cases where a variable has
the same name as its module file.  At least, none lived within the module
test directory.  So, to lock in that behavior, I added two tests of that
functionality while I was here.