Suggested fix for direction caching problem in MCP230xx

If, after setting pin direction on bank B, you set a pin direction on bank A, the direction cache is overwritten with only bank A data.  Suggested fix separates direction variables for banks A and B, overwrites as needed, and integrates the two banks back into direction cache.