Refactor: decrease complexity of M4A/MP3 classes

Split long functions into more, shorter ones.
Add CodeClimate badge to check for code complexity in the future
Fix bug when writing nil track/disk number

TagLib::MP4::Item.from_int_pair raises an error if the argument is
a pair of nil values, so don't try to write track or disk pairs if
the number is nil
Don't try to write a GIF file as a M4A cover art

taglib-ruby does not support writing GIF files to a TagLib::MP4::Item
so do not try doing it.

A better solution would be to do what iTunes does, that is, convert a
GIF to a PNG before storing it as cover art of an M4A. This might
happen in a future commit. For now, don't store the image in the M4A
Don't try to write a 'nil' track/disk count to M4A

M4A files require track and disk count to equal 0 when they are not
set (e.g., a file only has the track number, not the track count)