Add Web.RemoveFieldByInternalName and tests

Added a test that deleted the fields lefter over by earlier tests. I think this can be done some other way, not really sure what an actuall good way would be though.

Added Web.RemoveFieldByInternalName and tests for that. Notice that I'm using an ArgumentException which might not be entirely correct. Thoughts?
I added this code in the same class to cleanup.

    [TestCleanup]
    public void Cleanup()
        {
            // Remove all created Test Artifacts
            using (var clientContext = TestCommon.CreateClientContext())
            {
                // Fields
                var fields = clientContext.LoadQuery(clientContext.Web.Fields);
                clientContext.ExecuteQuery();
                var testFields = fields.Where(f => f.InternalName.StartsWith("Test_",StringComparison.OrdinalIgnoreCase));
                foreach(var field in testFields)
                {
                    field.DeleteObject();
                }
                clientContext.ExecuteQuery();

                // Lists
                var lists = clientContext.LoadQuery(clientContext.Web.Lists);
                clientContext.ExecuteQuery();
                var testLists = lists.Where(l => l.Title.StartsWith("Test_", StringComparison.OrdinalIgnoreCase));
                foreach(var list in testLists)
                {
                    list.DeleteObject();
                }
                clientContext.ExecuteQuery();
            }
        }

Marking the method as [Cleanup] will automatically run it when it's done testing, and I assumed that all artifacts that are being created will start with "Test_" as a name. If so, then clean up is relatively simple. I also did think of introducing collections on class level where we add a field name the moment we create it. E.g. "FieldsCreated.Add("fieldname")". In the cleanup we loop through that collection and remove the fields in there. Same for lists and other artifacts.