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 

`UART_NUMOF` can in theory be `1` while `UART_0_EN` is disabled. It's reasoning that both defines should be set accordingly.
cppcheck doesn't reason an sees a possible codepath that circumvents the guard (`UART_NUMOF`) which causes possible NULL-pointer dereferences (if `UART_0_EN` is disabled).
I have not found a standart conforming way to make the preprocessor set `UART_NUMOF` according to the number of the actually enabled devices. Therefore I "cheat" by using `UART_0_EN` (in this case, i.e. `UART_0_EN | UART_1_EN` at other places with similar problems).