Major update for Swift 2
Major update for Swift 2

* Add Swift 2-style error handling: many functions now 'throw'
* Add error types conforming to ErrorType, which are thrown
* Consolidate error processing and information sources to be
  in a single enum
* Refactor and clean up logic as a result of these improvements
  in error handling

hermanolsson/Locksmith,voidException/Locksmith,summerHearts/Locksmith,carabina/Locksmith,nvh/Locksmith,jwells47/Locksmith,augmify/Locksmith,liuruxian/Locksmith,hejunbinlan/Locksmith,liuruxian/Locksmith,hermanolsson/Locksmith,bestwpw/Locksmith,owenwuef/Locksmith,colemancda/Locksmith,colemancda/Locksmith,tucali/Locksmith,nvh/Locksmith,summerHearts/Locksmith,liuruxian/Locksmith,gfontenot/Locksmith,gfontenot/Locksmith,KimBin/Locksmith,augmify/Locksmith,owenwuef/Locksmith,vasco2ramos/Locksmith,jwells47/Locksmith,matthewpalmer/Locksmith,jwells47/Locksmith,liuruxian/Locksmith,pheld/Locksmith,pheld/Locksmith,owenwuef/Locksmith,matthewpalmer/Locksmith,augmify/Locksmith,owenwuef/Locksmith,KimBin/Locksmith,augmify/Locksmith,alessandrostone/Locksmith,tucali/Locksmith,owenwuef/Locksmith,vasco2ramos/Locksmith,gfontenot/Locksmith,hejunbinlan/Locksmith,nvh/Locksmith,liuruxian/Locksmith,bestwpw/Locksmith,alessandrostone/Locksmith,nvh/Locksmith,jwells47/Locksmith,gfontenot/Locksmith,jwells47/Locksmith,augmify/Locksmith,wimirwan/Locksmith,gfontenot/Locksmith,carabina/Locksmith,voidException/Locksmith,wimirwan/Locksmith,nvh/Locksmith