Hmc5883l: Fixed invalid type cast, added features and extended example

Made a few changes to Hmc5883l i2c compass. The first one is a fix, the coordinates were cast to 32-bit (default int size on Edison) instead of 16-bit. Second commit adds in the option to set a declination for a more accurate conversion to heading. Also changes heading to be standard 0 to 360 rather than signed 0 - 180. The example was updated with the new features.