lint: take care of various warnings/errors issued by cppcheck

- [ ] ~~4860~~ 1688  style (unusedStructMember)
- [x]   ~~68~~ ~~51  error (nullPointer)~~
- [x]   ~~15  style (unreadVariable)~~
- [x]    ~~12  performance (redundantAssignment)~~
- [x]      ~~8  style (unusedVariable)~~
- [ ]      8  performance (passedByValue)
- [x]      ~~7  style (unassignedVariable)~~
- [x]     ~~3  warning (nullPointer)~~
- [x]      ~~1  warning (uselessAssignmentPtrArg)~~
- [x]      ~~1  warning (invalidPrintfArgType_sint)~~
- [x]      ~~1  style (obsoleteFunctionsasctime)~~
- [x]      ~~1  performance (redundantCopy)~~
- [x]      ~~1  error (syntaxError)~~

See #480 

I think it might be preferable to restructure the implementations to treat the peripheral drivers as modules (and build them only if needed).