Modify logic for testing generate_screenshot

- Use after_update callback for upload_screenshot instead of after_find
  and touch the Screenshot instance in the controller during the show
  action
- Stub Phantomjs.run instead of using Rails.env.test in Screenshot model
- Skip after_update callback during tests
- Use shared contexts