Revamped the expression logic to make it much more expandable, and to handle
register and nets with single bit select.
Have not done range bits ([x:y]) yet
All tests pass except new test 2b