analyzeall: Don't write masks back into specs

Doing so renders the original specs invalid, resulting in subsequent
calls of analyzeProject() not ignore the original specs.
This also makes masking the specs an increasingly complex operation
as `specs` grows, rendering subsequent uses of analyzeProject()
take exponentially more time up to the point of unusability.

This commit solves this problem by creating a local `masks` table,
 which the masks are written to and read from.