[#72] Enable push & pull with cache

Cache support pulling (removing) elements from it
When labware scanned in it is removed from the cache
When labware is removed from the view it is returned to the cache
[#72] Refactor barcode scanning event from row

Input barcode scans generate inputBarcodeScanned
Output barcode scans generate outputBarcodeScanned
Makes connected presenter much clearer
[#72] Handling missing resources when pulled

Keep track of resources known to the cache that have been pulled
Added missing behaviour that reports when something has been pulled
Default to the above behaviour for connected
Merge pull request #116 from mattdenner/ensure_labware_can_only_be_scanned_once

Ensure labware can only be scanned once