Fixes widget's negative bounding values.

The values returned by all of widget's `GetWidth()`, `GetHeight()`, `GetX()`, and `GetY()` methods were not rounded to the correct numbers when the values were negative. This commit fixes this bug by implmenting a new `RoundToInteger()` helper function.

This commit also simplifies the code of calcuating the values for widget's origin and dimension. In addition, `Widget::Unit::kPixel` is renamed to `Widget::Unit::kPoint` to reflect the fact that the corresponded value is not measured in pixels actually.