Is there a spoon? How can you tell? (Additional fixes for existence checking, open connections, master database access, etc.)

The main additional issue here is that the previous fixes worked for calling Exists, etc., but not for the default initializer where the Exists call happens after context initialization has happened and also makes use of the database table checker. Specifically:
- The database initializer requires a context with an initialized model. This means that a request is made to get the provider manifest token, which may fail. It will only fail if the database doesn't exist and no connection can be made to master. In this case we just continue with a default provider manifest token. This likely means that things will fail later because there is no database, but throwing at the time is very confusing because the exception doesn't appear to be anything to do with the database not being available. Also, throwing here prevents any code from using Exists in an initializer to correctly reason about whether or not a database exists when no connection to master can be made. So by returning a default token we allow correctly written code to work by never accessing the non-existent database and code that would try to use or create the database will now throw in a more meaningful way and place.
- Cloning the context, which is used for the database table checking, was always closing a connection. This doesn't work for an open connection that is not preserving credentials. We now don't clone the connection in this case.
- The database table check was always closing the connection even when it started in an open state.
- Querying for EdmMetadata was always cloning the connection. It now doesn't if the connection is already open.
- When cloning an EntityConnection thee cloned connection was never disposed.

Note that the user must have been granted VIEW DEFINITION for any of this to work. Without this permission the database table checker always indicates that no tables exist.
No deed poll filed for your name change... (Return "(localdb)\mssqllocaldb" for LocalDb versions of 12 or newer)

We got information from the LocalDB team that from v12 on the name of the automatic instance has changed to be fixed to "(localdb)\mssqllocaldb" and that the documentation still needs to be updated.
Code in PreProcessor that rewrites navigation properties assumes that the EQ predicates generated for filter nodes are using database null semantics. However, the NullSemantics phase expands the EQs resulting in queries returning more rows than expected because of rows matched by nulls.
The fix adds a UseDatabaseNullSemantics flag to ComparisonOp, sets the flag to true in the code that rewrites the navigation properties, ensures that the value is passed along when nodes are copied, structural types are flattened, NE is transformed into NOT EQ. Then, the NullSemantics phase does not expand EQs with UseDatabaseNullSemantics == true.
The change also moves the NullSemantics phase before JoinElimination to ensure that EQs are expanded before the predicate logic for join elimination is performed.