There are two, and possibly three different MQTT client libraries for the esp8266 called pubsubclient out there...
First is the knolleary/pubsubclient.
Second is lmroy/pubsubclient.
Third is the pubsubclient library included in the ESP Easy Sensor project.
My sketch requires the lmroy/pubsubclient library.
1) Download https://github.com/Imroy/pubsubclient
2) On my linux system, I put the library in:
/home/ridge/.arduino15/packages/esp8266/hardware/esp8266/1.6.5-1044-g170995a/libraries/PubSubClient
The Show Hidden Files item in the View tab needs to be checked to see the .arduino15 directory.
I renamed the folder from pubsubclient to PubSubClient for good luck.
I would delete any other pubsubclient folders from anywhere else on your system the arduino compiler may look for it to keep things tidy. If you don't want to delete other pubsubclient folders, I had to rename them and move them to the desktop to keep the compiler from finding old versions.
The Windows path has been published a few times on the forum... the .arduino15 directory is the one to find.
After these sorts of changes, I always shut down and restart the arduino IDE if it was running.
For your MQTT broker (I use Mosquitto-1.4.3), be aware of this from the lmroy/pubsubclient site:
Note that for now PubSubClient requires a broker that supports version 3.1.1 of the MQTT standard, not 3.1 or earler.