Issue title: PhraseMatcher's Matcher() Issue (and Confusion)
 Issue body: I have a document that I would like to parse for matches. When on the line invoking matcher(doc), I have verified that the doc is maintained from whenever I originally created it, through printing its value using GDB; it prints the same value as when it is initially created, and I have examined the API to ensure that the functions that I call prior to matcher() do not modify the document. Attempting to use matcher() on the document yields no matches. However, if I use the language call function i.e. nlp on the line prior to using matcher(), I receive the correct output. What could explain why I need to invoke the nlp() twice?

Example illustrating what I'm experiencing:
```
import spacy
from spacy.matcher import PhraseMatcher

nlp = spacy.load("en")
matcher = PhraseMatcher(nlp.vocab)
`
doc = nlp(u"Enter hunter2 into the password field.")

#intermediate stuff ... I get chunks from my string here; 
#I use the following stuff: nlp() (but don't save value to the original doc), doc.noun_chunks, list.append(), span.text

patterns = []
matcher.add("Chunks", None, *patterns)
```

* **spaCy version:** 2.0.7
* **Platform:** Windows-10-10.0.16299-SP0
* **Python version:** 3.6.3
* **Models:** en


 Comments: 
 Comment 0: I'm sorry but I don't understand the question. I think there's too much missing from your example --- I can't see what's actually being done. What patterns are you adding, for instance?
 Comment 1: If there's still a problem, feel free to reopen!
 Comment 2: This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

{'source': 'GithubIssues', 'repo_name_with_owner': 'explosion/spaCy', 'issue_id': 299596058, 'repo_stars': 22772.0}