Fixes Pixel Alignment

Some notes.
* You can not half-pixel align in the view or the bottom and right edges will be empty on the screen, or do similar for surfaces.
* You must add not subtract the pixel alignment in the projection function, if you subtract you'll get a similar issue to views.
* 0.25 appears to work the best in all cases, 0.5 may be driver/graphics card dependent
* OpenGL and Direct3D pixel align differently, for instance, 0.25 is used in both systems, but when rendering text, you'll notice OpenGL has a space between lowercase 'r' and 't' whereas Direct3D does not, and Direct3D has a space between uppercase 'T' and 'Y' where OpenGL does not. One solution to this is to round up the glyph sizes in the font struct initialization.
![Text Differences](http://i.imgur.com/LgZXvkM.png)

This was tested with the following code.
```cpp
draw_text(0,0,"01234567890!@#$%^&*()_+-={}[]:;|\?/>.<,
QWERTYUIOPASDFGHJKLZXCVBNM
qwertyuiopasdfghjklzxcvbnm");
```
* OpenGL can not do a full half-pixel alignment (0.5) or games with repeating/scrolling backgrounds will skip and have a 1px gap sometimes between them.

Darkstar2 has reported that +0.25,+0.25 pixel alignment works for him resolving #725
These changes appear to work in all possible test cases now. This pull request can be merged.