Save and restore token state more completely in lexToken
Fix for #71.

b7972ad95ccc62da8e98730adb3ae5898f138b63
Fixed: parseBlock would fail if a preprocessor statement was the last one in the block.

Because preprocessor statements are essentially empty statements and can return a null node, parseStatement is now a loop that continues until it gets a real node, or until it reaches a terminating token. parseBlock passes _braceR as the terminating token and checks for a null return from parseStatement.
Fixed: orphaned comments/spaces were not properly attached to the previous/next node.

Fixes a case like this, where comments are before/after a preprocessor directive:

function test()
{
    // These comments
    #define FOO 7
    // should be attached
    #define BAR 13
    // to the next statement
    var foo = FOO + BAR;
    // And these comments
    #undef FOO
    // should be attached after
    #undef BAR
    // the previous statement
}
Fixed: macro function not called at end of macro was not being appended to expanded tokens.
Added preprocessor tests to tests.js