+ Start combine code from fiame-parser at the same with writing a template spec in fiame-template-api.
+ Create a functional state machine for easy to read parsing code

while (state.completed() == false) {
  ParseCommand cmd = cmd.process(state);
}

ParseState {
buffer,
error,
stack
}

ParseCommand -> emit, transition, etc...
+ convert to lowercase eof.
+ Move token from old package to new one
+ Implemented Data and CharacterReferenceInData commands.
+ Move non-important utils class to this package
+ Change all the imports
+ Extract Token inner class to outer and move to different tokens package
+ Move Tag and fix up ParseState
+ remove complete from ParseState and add CleanupCommand.
+ Add CharacterToken and CommentToken
+ Done DataCommand, and skeletons of all EmitCommands (except for emitting EOFCommand .. it's called CleanupCommand).
+ Add CharacterReferenceInDataCommand.
+ Fixed up few more parsing commands.
+ Finish migration comment parse state to command object.
TODO: add javadoc explain the assumption of each command objects.
+ Finish DoctypeCommand, BeforeDoctypeNameCommand
Finished up DoctypeNameCommand.
rename DoctypeToken.
Add command to parse doctype public identifier
+ add commands to parse doctype system keyword and identifier.
+ Make the source code compilable.
+ Move Tag building logic to TagBuilder.
+ Add commands to build tags name.
+ Add command to parsie attribute name
+ Add select package
+ Command to parse attribute value
+ Add EmitIncompleteTagAsDataCommand to handle eof case