Improve Lines property access performance.

For performance, we no longer use require("private").makeAccessor() to
create Lines secret objects, though we still use .makeUniqueKey(), which
returns an unguessable key "invisible" to Object.getOwnPropertyNames.

Since we define the secret as a non-enumerable property, we can be sure
(in any ES5 environment) that the secret is really inaccessible to code
outside the lib/lines.js module.

To save time in the constructor, I also made the .length and .name
properties lazy by moving them to the Lines.prototype object as getters
that return a value based on the contents of the secret object.

These changes reduce the time taken for the test suite to complete from
5.8s to 4.1s on my machine.