Simplify element construction

el@val[123456789012345] would return 0 because we were arbitrarily
taking any numbers and running them through
String.valueOf(Integer.valueOf(element))... which serves no purpose
beyond ruining any numbers too large to store as ints/doubles. This
commit makes it so elements are just read as strings until they need to
be numbers.