Upload screenshot in controller and after_create

- Update screenshot (if necessary) in the controller
- Upload screenshot for the first time after a new Screenshot instance
  is created
- Move Screenshot#needs_update? to public visibility
- Modify logic in Screenshot#needs_update? to check if the url is blank
  first
- Allow RSpec mocks and stubs in Cucumber definitions
- Stub Phantomjs and skip Screenshot after_create callback in
  webpage_requests step definitions
- Create new valid webpage request in the "When I submit a valid URL"
  step instead of building a stub so that the "Then I should see
  information about the URL" step can use it for the webpage request
  URL it visits as opposed to using WebpageRequest.last
- Don't check page content past "Overview" in the "Then I should see
  information about the URL" step to speed up running Cucumber tests;
  the overview alone should be enough to know the request was
  successful.
- Move let(:screenshot) out of phantomjs shared context and back to
  screenshot spec.
- Use the last argument passed to Phantomjs.run to determine screenshot
  filename to touch.