Add globbing to filesystem mocking

Add globbing to filesystem mocking so that more code can be tested
against the mock.  Also moves the filesystem mock to pathtools,
and renames pathtools.GlobWithExcludes to pathtools.Glob, replacing
the existing pathtools.Glob.

Test: blueprint tests
Change-Id: I722df8121bc870c4a861d7c249245c57dcb607be
diff --git a/singleton_ctx.go b/singleton_ctx.go
index fc4a781..31195af 100644
--- a/singleton_ctx.go
+++ b/singleton_ctx.go
@@ -16,6 +16,7 @@
 
 import (
 	"fmt"
+	"github.com/google/blueprint/pathtools"
 )
 
 type Singleton interface {
@@ -68,6 +69,8 @@
 	// builder whenever a file matching the pattern as added or removed, without rerunning if a
 	// file that does not match the pattern is added to a searched directory.
 	GlobWithDeps(pattern string, excludes []string) ([]string, error)
+
+	Fs() pathtools.FileSystem
 }
 
 var _ SingletonContext = (*singletonContext)(nil)
@@ -239,3 +242,7 @@
 	excludes []string) ([]string, error) {
 	return s.context.glob(pattern, excludes)
 }
+
+func (s *singletonContext) Fs() pathtools.FileSystem {
+	return s.context.fs
+}