(CFACT-104) Add dmi resolver to solaris

This patch adds support for dmi facts (bios, manufacturer, and product) to
solaris. This is mostly for i86 since sparc does not provide any way to fetch
equivalent information.
Generally copy elision is limited to things like return values (i.e. named return value optimization).  I don't know of any compiler that would try to elide a copy here by tracking the mutability of the original object (an aliasing problem too) following what should have been a copy.  Generally speaking, you need to be explicit with moving things to ensure the proper overloads are invoked.  The only place you don't need to be explicit is when returning a local which will get moved into the returned value.