Improve savePhotoForPlot

addresses #130 on github

This commit does a number of things:
* Make savePhotoForPlot private, it is only used in this class
* Clean up the api for updatePlot
* Remove broken reference to savePhotoDialog and unnecessary indirection
  savePhotoDialog was orphaned at some point such that it is initialized
  as null and `safeDismiss`ed a few times, without *ever* being given
  dialog box to dismiss. I think as a result, the saveDialog was not
  being dismissed because the code was still trying to dismiss this
  other dialog. To make matters worse, `savePhotoForPlot` was receiving
  a member of it's own class as a parameter, which is wholly
  unnecessary. These things combined introduced this dialog dismissal
  problem.
* Factor out the bailout steps for saving photos
  Unfortunately underlying methods specify `throws`, so lots of stuff
  has to be wrapped in a try block. Since these catches can't be
  removed, they simplified to call one atomic method that dismisses the
  dialog box, shows some toast, and logs the exception.
* Reorganize the flow through `savePhotoForPlot`
  In order to avoid christmas-tree code, a few early exit conditions are
  listed at the top.
Factor out save failure logic
Allow photo uploads for users who can't edit tree