parsed duplicated symbols. simplified linker state

Added support for duplicate symbols. Addresses #76.

Also, simplified the linker/parser state a bit and improved performance