Added reason and cost arguments to transaction methods
- Transaction methods that modify the stock in some way now offer an optional
$reason
and$cost
parameter to correctly update the stock record when a stock event takes place. - Added more documentation and tests to match