Cppcheck fixes

This series of patches are moving member initialization into initialization list to aviod double setting of memvers.

```
Class
{
private:
  std::string str
public:
  Class()
  {
    str = "a String";
  }
}
```
will result into something like this (metacode):
1. alloc mem of Class
2. str = std::string()
3. entering constructore budy
4. str = std::("a String")

instead of setting member vars in the constructor body, we should move them out like this:

```
Class
{
private:
  std::string str
public:
  Class()
  :  str("a String")
  {}
}
```

this will result in this:
1. alloc mem of Class
2. str = std::string("a String")
3, entering constructore body (should be optimized out, because it is doing nothing)

This saves around 9kB of binary size with clang-3.1 on my system

Second thing I've done is replacing size() == 0 and size() > 0 calls with empty() and !empty(). size() could be linear complexitiy (depends on implementation), but empty() has always constant complexity.