Make poltergeist dependency optional

Poltergeist is only needed in certain scenarios. Unfortunately, whether or not it is being used, one has to pay the cost of its entire dependency tree (which is quite large!).

Ideally, this would not be a hard dependency.