A bunch of updates in Result.scala

- storing exceptions instead of strings for errors;
- added Outcome type, for results that can be ignored
- added OK, a positive instance of Outcome